History of changes

Rel 5.64
  Bug fixes:
  * If more than one pcap file is in a scenario only the first pcap file was

Rel 5.62
  Bug fixes:
  * Improved logic when sending digits and live speech
Rel 5.60
  Bug fixes:
  * INVITE message is not processed for T.38 INVITE

Rel 5.58
  Bug fixes:
  * Thread deadlock issue which caused problems during stress testing scenarios.

Rel 5.56
  Bug fixes:
  * Fix for scenario not ending properly.
<---- BYE
----> 200 OK
  * Changes made to support more advanced scenarios like gradual call increase.
  * Changed the way internal variable CCnt is referenced. Now have to use [CCnt] to get its value.
  * Minor changes to pause maintainer and corrected gradual call increase scenario.
  * Synchronized to fix outgoing/incoming message logging. For example it was happening that response to the 
      request was logged in a file before the request itself.
  * Fixed logic which dials outgoing digit. Increased inter-digit time and in some cases the 1st digit was omitted
Rel 5.54
  Bug fixes:
  * The following logic did not work well in case a variable was getting a value from a non-existing header
      if (xy has anything) goto end
Rel 5.52
  Bug fixes:
  * Re-transmissions were not sent as expected
  * Looping within the same scenario should not increase call-id value
  * Now possible to compare variable to a two or more word value
  * When running in CLI mode the program did not always respect -tc N constraint
  * In some cases scenario was prematurely terminating (for example last 2 entries in a scenario are incoming messages)
Rel 5.50
  Bug fixes:
  * '-noCID' flag was not respected when ran from a CLI
  * long scenario enties were not limited to 35 characters in CLI mode and on Scenario proogress screen
Rel 5.48
  * Propagated 3.54 code changes to 5.xx
Rel 5.46
Bug fixes:
  * Fixed a timestamp problem when dialing digits. It should stay the same in all rtpevents for the same digit.
  * Propagated 3.52 code changes to 5.xx
Rel 5.44
Bug fixes:
  * Inability to explicitly set variable value to an arbitrary value (for example, Header field is empty and Expr:"=10")
  * Incorrect logic that sets a variable value for cases like this one:
      <--- 200
      ---- set toTag=("To:","tag=*")
      <--- NOTIFY
      where 200 and NOTIFY are coming in very close in time.
Rel 5.42
Bug fixes:
  * Inserting variable value from a file in form 50000+1 does not start from 50000 but from 50001
  * Call generation does not respect total number of calls generate if Call-ID has a constant value
  * Added information about which port fails to open
Rel 5.40
New features:
  * Condition operators are expanded. Beyond default (<, <=, ==, !=, >=, >, has) users can now add division and modulo.
    For example:
     a)     condition=if (Resp/100 == 4) goto end   // will go to the end for any 4XX response
     b)     condition=if (rndVal%5 == 0) goto end   // for every rndVal divisible by 5 scenario goes to the end
     NOTE: Conditions can be edited directly within GUI combo box, or edited in Scenario Entry Text section of the program
     --> See newly added scenario 'Client_reg_outgoing_call_advanced.txt' which illustrates new condition evaluation and
         waiting for an incoming RTP
   * Added new condition cases which waits on the RTP from the remote side before it moves to another scenario entry
Bug fixes:
  * Call generation does not respect total number of calls constraint.
  * Fixed GUI issues where custom values are added through combo boxes (applies to custom SIP messages and relational
    operators under conditions)
Rel 5.38
  * Fixed a bug which caused values increments not to work correctly if values file contains empty lines
  * When scenario other than default is loaded, modified and saved a scenario name on program's title bar was wrong
  * Fixed a bug where scenario can be only loaded once (after that the program had to be restarted to open another scenario)
  * Scenario could not start with random or regular variable
  * Timing of pauses is incorrect if scenario starts with a variable and Call-ID references the variable   
Rel 5.36
  * Fixed inability to add 'RTP echo' option through GUI
  * RTP echo mode did not work correctly
  * Added option to log scenario progress screen (before was always turned on, now it is turned off by default)
  * Added CLI option logScen to enable scenario progress logging at the end of scenario run
  * Improved logic where scenarios directory is looked for
  * Fixed inconsistency where log files are stored
  * Random variable was not available in a dropdown list on condition dialog screen
Rel 5.34
Bug fixes:
  * Calls are not generate if scenario starts with a pause and goes like this:
  ---- Pause[ms]=1000
  ---> INVITE
  * Inability to evaluate variable content against value which has multiple words
  condition=if (toTag has maybe this or that) goto end 
  condition=if (toTag has "maybe this or that") goto end 
  * Extra empty SIP log files are created when SIP logging checkbox is selected
  * 'lrtp' option set on CLI is not reflected in SDP
Rel 5.32
Bug fixes:
  * Corrected local IP address selection if multiple IP addresses available on the PC where program runs.
    (Before the bug fix, the program was not really picking what selected, rather it used the first IP listed)
  * Incorrect logic to play RTP from pcap file. Was causing problem where pcap file would not be playe entirely
  * Inability to edit and set 'Remote RTP Port' and 'Group RTP packets' fields under Options/Remote RTP... .
Rel 5.30
Bug fixes:
  * If '-to' switch is used, successful scenario completion was not reported until time-out expires
Rel 5.28
Bug fixes:
   * Fixed condition evaluation bug.
condition=if (Resp > 200) goto End
Rel 5.26
Bug fixes:
   * If ephemeral port is used the value has to be used wherever [local_port] is referenced
Rel 5.24
Bug fixes:
   * Allow local SIP port to be set to 0. If that's the case, an ephemeral port is picked
Rel 5.22
Bug fixes:
   * Failure to process message with SDP if telephone-event is missing
Rel 5.20
New Features:
   * Added live speech option for RTP. Using a microphone and speakers it is possible talk and listen. Can act as a true SIP phone now. Supported speech codecs are: PCMU and PCMA
   * RTP command to inject arbitrary digits into a speech path
   * New scenario is added 'Client_speech_dials.txt'. It establishes a call, create a two audio and dials a random 7 digit number
Bug fixes:
   * GUI layout
   * Resizing issues
   * TLS connectivity issues when running the program from CLI. (Was filing to reuse the same port)
Rel 5.04
New Features:
   * Added support for DNS SRV. Under remote server now it is possible to enter values like this: _sip._udp.example.com
     The same is possible to enter from a command line for switch -rip (-rip _sip._udp.example.com)
Rel 5.02
   * Bug fix regarding call/second generation speed, total and concurrent calls
Rel 5.00 (Deluxe version)
New Features:
   * Command line interface. To get help use switch -h. Order of switches is not important.
   * New transport protocols: TLS and WSS
   * Public/Private key creation and management (RSA, EC, DH, DSA)
   * Self signed certificate creation
   * Localized keystore which keeps own certificate and private key
   * Localized trust store to keep remote servers' certificates.
   * Keystore and trust store keep material after program is closed. Meaning, certificates need to be added only once.
   * CLI mode provides ability to limit scenario execution time. After timeout, scenario is interrupted and short summary is displayed on the screen along with unexpected message summary
   * Option to check remote client's certificate
   * Option to display or not to display scenario progress while running in command line mode
   * New binary format *nix OSs allow user. No more typing 'java -jar...'
   NOTE: To ensure progress screen is working right on Windows it is required to download and install ANSICON libraries (http://adoxa.altervista.org/ansicon/). Once downloaded, unzip and from DOS prompt enter either 'x86' or 'x64' depending if you are running on 32-bit or 64-bit mahcine and execute 'ansicon -i'. After that start new DOS console and from now on everything will work fine.
Rel 4.02
   * Improved RTP streaming:
      - each stream has unique SSRC
      - each stream gets the same RTP packets (order and number of packets is the same)
      - this enables having multiple concurrent RTP sessions and dialing in the same numbers over and over
Rel 4.00
   * Supports new 'websocket' transport protocol to carry SIP messages
Rel 3.54
   * All header values should be returned in proper string case
   * Fixed a bug which deletes a call from the DB when scenario execution reaches its end
Rel 3.52
   * Fixed compact headers with no space before the header value
Rel 3.50
   * Fixed condition evaluation bug.
condition=if (Resp > 200) goto End
Rel 3.48
   * New RTP command which enables to change media port while scenario is executed
Rel 3.46
   * Fixed issue when streaming a pcap file to many RTP clients. Packet is read and sent to all, another packet read and sent to all clients,...
   * Fixed conditional branching logic
   * If system is run in server mode, the program does not stop execution once the scenario reaches end. After fix it continues
     to work in daemon mode.
   * Allowed the program to find call based on Call-ID if a remote client uses a short header name (i:).
Rel 3.44
   * Fixed TCP issue when SIP Inspector was running as a client and using ephemeral rather than configured port. To
     use ephemeral port just set local port value to 0.
Rel 3.42
   * Fixed error when chaining SIP scenarios. Socket and threads were not properly spawned after finishing the first scenario.
Rel 3.40
Bugs fixed:
   * An error when loading values from non XML formatted file
   * An issue when scenario is loaded, changed and saved under different name with "Save Scenario As", then changed again and saved with "Save Scenario" option.
Rel 3.32
   * Improvement in IP address discovery (wildcard IP addresses included)
Rel 3.30
New feature:
    * The content of values file can stay in its previous format (simple and ';' separated values) or it can be an XML format in the following form
            <value>hello</value>                                    <!-- Referenced with '[field0]' -->
            <value><![CDATA[<Something more exotic>]]></value>      <!-- Referenced with '[field1]' -->
Bug fixed:
    * If program is in server and Options/Don't check Call-ID is checked selected incoming messages are not processed.
    * Unexpected messages do not reset values referenced with keyword '[last_To:]' or similar key words.
Rel 3.28
New feature:
   * Added new option (Options/Don't check Call-ID). The option is used to script scenario where
     only sequence of messages are known, but the program is not allowed to check and validate
     the messages belong to the same dialog.
Rel 3.24
Bug fixed:
   * Under special circumstances it was possible Machine-ID was empty
   * Correct IP version caching in between runs
Rel 3.22
New Features:
   * IPv6 addresses in SIP message should be surrounded with square brackets as per http://tools.ietf.org/html/rfc5118
   This means [local_ip] and [remote_ip] will be enclosed within [] if IPv6 is selected, and without [] if IPv4 
   * IPv6 addresses in SDP body should be without square brackets. For that reason new keyword [local_ip_sdp] is introduced and that keyword never encloses an IP address with []
   * Added shortcuts CTRL+O, CTRL+W, CTRL+S to load scenario, load values and save scenario file, respectively
   * Added a hint at the main window title in form of '*'. A hint indicate when to save the original scenario file.
   * Modified original scenarios so the same scenario content works well for both IPv6 and IPv4
Bug fixed:
   * After initially loading scenario file changes were not remembered.
Rel 3.10
Bug fixed:
  * TCP message corruption
  * Thread synchronization when accessing the same call
Rel 3.00
New Features:
  * TCP support
  * IPv6 support
  * Echo RTP mode (used to replay incoming RTP back to originator)
  * Variables can get random values (can be used in messages or to vary pause durations
  * Ability to store whole SDP body in a variable (to pass SDP back and forth when brokering calls between two sides)
  * Ability to save remote clients IP:port into a variable and re-use it later
Bug fixed:
  * Resizing on some OSs did not work well
  * Open scenario and values files now start in 'scenarios' and 'values' directories, respectively
  * Last used scenario was not loading automatically next time the program starts