* Propagated 3.54 code changes to 5.xx
* 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
* 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:
---- set toTag=("To:","tag=*")
where 200 and NOTIFY are coming in very close in time.
* 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
* Condition operators are expanded. Beyond default (<, <=, ==, !=, >=, >, has) users can now add division and modulo.
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
* 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)
* 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
* 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
* Calls are not generate if scenario starts with a pause and goes like this:
* 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
* 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... .
* If '-to' switch is used, successful scenario completion was not reported until time-out expires
* Fixed condition evaluation bug.
condition=if (Resp > 200) goto End
* If ephemeral port is used the value has to be used wherever [local_port] is referenced
* Allow local SIP port to be set to 0. If that's the case, an ephemeral port is picked
* Failure to process message with SDP if telephone-event is missing
* 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
* GUI layout
* Resizing issues
* TLS connectivity issues when running the program from CLI. (Was filing to reuse the same port)
* 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)
* Bug fix regarding call/second generation speed, total and concurrent calls
Rel 5.00 (Deluxe version)
* 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.
* 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
* Supports new 'websocket' transport protocol to carry SIP messages
* 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
* Fixed compact headers with no space before the header value
* Fixed condition evaluation bug.
condition=if (Resp > 200) goto End
* New RTP command which enables to change media port while scenario is executed
* 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:).
* 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.
* Fixed error when chaining SIP scenarios. Socket and threads were not properly spawned after finishing the first scenario.
* 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.
* Improvement in IP address discovery (wildcard IP addresses included)
* 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]' -->
* 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.
* 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.
* Under special circumstances it was possible Machine-ID was empty
* Correct IP version caching in between runs
* 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
* After initially loading scenario file changes were not remembered.
* TCP message corruption
* Thread synchronization when accessing the same call
* 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
* 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