Home / 9.1
Name Modified Size InfoDownloads / Week
Parent folder
README-changelog.txt 2014-01-28 38.6 kB
voipmonitor-amd64-9.1-static.tar.gz 2014-01-28 2.9 MB
voipmonitor-i686-9.1-static.tar.gz 2014-01-28 2.4 MB
voipmonitor-9.1-src.tar.gz 2014-01-28 903.4 kB
Totals: 4 Items   6.2 MB 0
9.1 29.1.2014
=============
- Fix MySQL deadlock in case the MySQL connection timeouts. This bug started since 8.4 - 9.0 verisons. 
- Fix storing to MySQL if file is read from file (bug introduced in 8.4 and 9.0 versions) and do not fork when reading from file
- Optimize failed registrations which caused mysql overload in case of register flood
- fix configuration issue in case the datbase is partitioned and cdr_partition was not set 
- fix MySQL indefinit reconnect in case the sniffer is stopping or starting which causes hang in linux bootup / shutdown process. 
- fix undefined codec in case of CNG (comfort noise) frames. 
- add new option saveaudio_reversestereo which reverts left and right channels 
- add new manager command pcapstat which prints ringbuffer packet drop counter
- fix issue in interface option when list of interfaces contains spaces like: interface = eth0, eth1
- support mysql 5.0


9.0 17.1.2014
=============
Version 9.0 is formerly 8.4RC27 and this changelog sumarizes all changes since 8.3 (all features from 8.4)

Optimizations 
-------------
- do not create RTP pcap file for every sip call but only if there is actually RTP which saves a lot of I/O 
- take min MOS score from fixed2 jitterbuffer simulator by default which eliminates low mos score due to f1 and adapt sensitivness
- do not flood log with "to much INVITEs in this call" show the message only once increase MAX_IP_PER_CALL from 30 to 40
- Close SIP and SIP+RTP dump files ASAP to save some number of opened files and memory (Rob Gagnom)
- optimize thread0 packetbuffer size
- disable sendfile flood if not present in old kernel
- modify install script which will ask if the user wants to overwrite configuration file
- optimize SIP MESSAGE sql storing which accidentally access database for each SIP MESSAGE which leds in queueing sip message types 
- do not create partitions every hour but every 12 hours 
- add option disable_partition_operations which will not create partitions (in multisniffer environment all other sensors should have disabled partition creation which is redundant) 
- enhance drop old partitions
- check if another instance of voipmonitor is running on background based on name of the configuration file (so more instances can still run on background with different configs)
- in case call is closed with 403 response shorten close window to 5 seconds so that call will not timeout on rtp_timeout (which is 5 min by default).
- change mtune and march to native in Makefile
- calls which end with 4XX or 5XX was not released from memory immediatelly and was waiting for rtptimeout if sip source port differs from the first INVITE.

Bugfixes 
--------
- do not parse SIP data after content-lenght = X. This fix was already done before but only if verbose > 1 
- save to register_failed all REGISTER which is not success and not only if the password is wrong. 
- fix DSCP (reversed) and not working if pcapscandir is used. 
- do not terminate call prematurely when SIP 501 "Not Implemented" is received
- fix spooldir cleaning (broken in 8.3 version) and reindexfiles which has problem if directory has more then 2GB
- fix potential crash in RTP processing
- fix crash on some 32 bit platforms
- fix audio decoding for comfort noise and dtmf - do not create new RTP instance if payload is one of 13,19,101
- fix callslimit which did not worked at all
- fix ODBC driver (tested for mssql) which was not maintained for a longer time
- fix traffic speed in verbose output 
- If cdr proxy is enabled (which is by default) fix called IP in cdr and false proxy record in proxy column in case called make reintive. Fix proxy in case there is INVITE to fail-over - write the last IP of the last SIP and not the first (failed) one. Fix hangup indication (cdr.whohangedup) in case call travers through proxies (called was marked as hanged up always)
- following issue was fixed only when reading pcap files but not in realtime sniffing - prior verison 8.0.1 deduplicate (which is default off) was comparing only data without ip header and udp header so duplicate packets was matched also in case when IP addresses differs. This was good for some cases but it leads to completely ignore RTP streams in other cases. Now default option is to check duplicates based on not only data but ip headers too. To change this set deduplicate_ipheader = no. default = yes.deduplicate_ipheader = yes. fix recent deduplication fix which was wrong and it leads to remove packets which were not duplicated because it took less data than actual data (12 bytes less). This fixes T38 decoding in GUI for example.
- do not send SID frames to G729 decoder which fixes garbled sound for G729 RTP streams. 
- escape database name in sql queries ('-' caused problems) 
- fix detect partitions in cdr% tables when upgrading from older versions
- fix convert_dlt_sll2en10 parameter
- do not flood syslog when RTP files cannot be created
- fix IP header len when defragmenting packet which prevents to see some SIP packets in SIP history (and in wireshark).
- fix SDP: sometimes SDP could not be parsed if the IP was the last line in SDP in the packet thus ignorind the whole RTP
- fix parsing tags which can be terminated also by only new line instead of CRLF
- fix rare issue with new invite after last sip response 487
- do not report mysql error when recreating mysql stored functions. do not drop / create those functions if they are not different 
- fix parsing custom headers for sip methods RES3XX, RES4XX, RES5XX, RES6XX
- fix incorrect 200 OK last response code when CANCEL is confirmed by 200 OK without request terminated. 
- if voip SIP device (with source IP 1.1.1.1) sends in SDP that it wants RTP for example to 10.0.0.1 and port 10000 the call also sniff RTP from 1.1.1.1:10000 or to 1.1.1.1:10000 which does more problems than it solves. Now this behaviour is changed and if you need this option back you can enable it sdp_reverse_ipport=yes. This change fixes RTP packets assigned to wrong call and other weired problems. 
- fix crash in case the sniffer run outs of file descriptor
- DTMF events are not always 101 - take it from the SDP which fixes audio sync and g729 garble issues and many graph files in case telephone events payload is not 101 (typically 100) 
- do not try connect to mysql indefinitely when the sniffer is started. This was problem if mysql does not run and voipmonitor starts at boot which stucked the whole booting process.
- if the call is not connected it was supposed to set -1 to connect_duration but the column is unsigned thus it will end up with 0 - this fix will set NULL if call is not connected (as well as first_rtp_time and progress_time)
- automatically disable partitions for mysql <= 5.0
- fix mysqlcompress configuration option which has been always disabled.
- fix if sniffer is terminated by TERM signal (service voipmonitor stop) and there were some calls in sql queue and the mysql server has gone the sniffer tries indefinitely to connect.
- fix reloading capture rules which dissapeared due to mysql race condition 
- fix mysql issues causing random corruption when doing reload
- fix long term issue (all versions) where the .graph file in CDR detail (in the GUI) suddenly jumps if sequence numbers changes either due to packet loss or due to VAD. Now graphs should not move up/down suddenly  
- fix low MOS score for adaptive jitterbuffer in case a SIP session reinvites and RTP packets does not correctly increases sequence numbers or timestamps
- fix low MOS score for adaptive jitterbuffer even for 5 packet loss caused by normal shrink/grow internal jitterbuffer simulator.A
- fix inappropriate packet loss report if a SIP session reinvites and RTP stream with the same SSRC has hole which is normal (although the wireshark still report packet loss as well as any RFC RTP compliant RTP analyzer)

New features 
------------
- implement new cdr columns - sipcallerport, sipcalledport - if configuration variable cdr_sipport is set to yes
- implement destination_number_mode which will take number from INVITE URI or To: SIP header. If destination_number_mode = 1 it will always save number from To: header. If destination_number_mode = 2 it will take number from INVITE URI. default: destination_number_mode = 1  
- When scanpcapdir is being used, voipmonitor will by default read any new file that is created in that directory as soon as the file is closed.  This is the normal setting if your packet capture software is tcpdump.  If you are using a different packet capture software, you may need to change this setting to "rename" if that software writes to a temporary file, closes it, and then renames it to something else after the file is closed.  Default setting is "newfile" (Rob Gagnon)  
- packetbuffer mirroring - add support for multiple sender connections to one central receiver. Now the receiver will accept unlimite number of connections at the same time. 
- support compile on FreeBSD (tested on FreeBSD 8.3) 
- implement reading from list of interfaces which is better alternative to interface = any. Now it is possible to sniff on eth0 and eth2 within one sniffer - interface = eth0,eth2. Reading is done in separate threads which takes benefit over interface = any  
- if SSRC changes during call and there is another SSRC change to previous one and the RTP packet has the same seq and timestamp does not reflect the gap - do not report huge packet loss
- implement GRE tunnel de-encapsulation
- parse caller and called number in function save_live_packet if call is NULL which allows to filter OPTION and SUBSCRIBE in GUI live sniffer
- Implement multipart/mixed SIP messages which voipmonitor ignored if there was SDP (for example SIP messages with SDP and ISUP)
- implement binary format for graph file which makes *.graph files 5 times smaller which greatly reduces disk space and I/O operations. This needs the latest GUI 
- implement autocleaning in cachedir and automatically move files when sniffer was interrupted and restarted
- add pcap size limit - configuration option maxpcapsize (in MB)
- add upgrade, restart and sniffer stats via manager
- add option create_old_partitions and create_old_partitions_from to create old partitions
- add uptime to sniffer statistics
- for caller number use tag remote-party-id (if exists) and caller contain anonymous so the CDR still contains number of the caller 
- SCCP: add support for CM7 header version (missing RTP)
- SCCP: add CM5CALL_INFO_MESSAGE 0x014A type so caller/called numbers are set 
- implement ITU-T P.862 PESQ. pesq binary must be installed. mos_lqo in voipmonitor.conf must be enabled. in capture rules tables filter_ip or filter_telnum wav and mos_lqo must be anebled - cdr.a_mos_lqo_mult10 and cdr.b_mos_lqo_mult10 added.
- new configuration option onewaytimeout ends sip call after set seconds which does not receive any reply from the other side. Technivally it takes sip source ip address from first invite/register and if there is no other sip source ip different from the first source ip the call will be terminated after onowaytimeout seconds. If a call is terminated due to this timeout in cdr.bye column will be 101. Purpose of this timeout is to release memory as soon as possible in case there INVITE flood which does not have any reply. Another reason is when mirroring is set incorrectly and the sniffer sees only one side of a SIP signalization. If onowaytimeout is not set default is 15.


8.4RC27 16.1.2014
=================
- fix mysqlcompress configuration option which has been always disabled. 
- fix FreeBSD endiannes again. Now RTP works
- calls which end with 4XX or 5XX was not released from memory immediatelly and was waiting for rtptimeout if sip source port differs from the first INVITE. 
- fix if sniffer is terminated by TERM signal (service voipmonitor stop) and there were some calls in sql queue and the mysql server has gone the sniffer tries indefinitely to connect. 
- new configuration option onewaytimeout ends sip call after set seconds which does not receive any reply from the other side. Technivally it takes sip source ip address from first invite/register and if there is no other sip source ip different from the first source ip the call will be terminated after onowaytimeout seconds. If a call is terminated due to this timeout in cdr.bye column will be 101. Purpose of this timeout is to release memory as soon as possible in case there INVITE flood which does not have any reply. Another reason is when mirroring is set incorrectly and the sniffer sees only one side of a SIP signalization. If onowaytimeout is not set default is 15.
- support sccp skinny header ver. 0x17


8.4RC26 10.1.2014
=================
- do not try connect to mysql indefinitely when the sniffer is started. This was problem if mysql does not run and voipmonitor starts at boot which stucked the whole booting process. 
- fix clean partitions if cleandatabase is set
- if the call is not connected it was supposed to set -1 to connect_duration but the column is unsigned thus it will end up with 0 - this fix will set NULL if call is not connected (as well as first_rtp_time and progress_time)
- check if another instance of voipmonitor is running on background based on name of the configuration file (so more instances can still run on background with different configs) 
- in case call is closed with 403 response shorten close window to 5 seconds so that call will not timeout on rtp_timeout (which is 5 min by default). 
- fix freebsd endianess detection which resulted in ignoring RTP packets
- change mtune and march to native in Makefile
- automatically disable partitions for mysql <= 5.0 


8.4RC25 8.1.2014
================
- fix clean partitions when opt_cleandatabase is set
- avoid race condition leading to crash when cleaning regfailed class (since 8.4RC24)
- print error when any of sniffing interface fails to initialize
- fix long startup of the sniffer optimizing mysql query checking cleaning 
- document cdr_sipport option in voipmonitor.conf which was added recently


8.4RC24 3.1.2014
================
- fix memory leak in adaptive jitterbuffer if it is reset (leak since 8.4RC versions) 
- DTMF events are not always 101 - take it from the SDP which fixes audio sync and g729 garble issues and many graph files in case telephone events payload is not 101 (typically 100) 


8.4RC23 2.1.2014
================
- cache register_failed queries to not flood mysql database in case of register failed flood attack


8.4RC22 30.12.2013
==================
- do not parse SIP data after content-lenght = X. This fix was already done but only if verbose > 1 
- implement new cdr columns - sipcallerport, sipcalledport - if configuration variable cdr_sipport is set to yes
- implement ITU-T P.862 PESQ. pesq binary must be installed. mos_lqo in voipmonitor.conf must be enabled. in capture rules tables filter_ip or filter_telnum wav and mos_lqo must be anebled - cdr.a_mos_lqo_mult10 and cdr.b_mos_lqo_mult10 added.


8.4RC21 19.12.2013
==================
- SCCP: add CM5CALL_INFO_MESSAGE 0x014A type so caller/called numbers are set 
- fix sip register in caase REGISTER-OK (no 401 or 404) - broken since 8.4RC20
- fix crash in case the sniffer run outs of file descriptor
- fix DSCP RTP in CDR in case pcap is read by pcapscandir
- optimize SIP MESSAGE sql storing which accidentally access database for each SIP MESSAGE which leds in queueing sip message types 
- modify install script which will ask if the user wants to overwrite configuration file
- add support for CM7 header version (missing RTP)


8.4RC20 16.12.2013
==================
- save to register_failed all REGISTER with only one REGISER meesage and also all REGISTER with one 401 or 403 reply (which were not stored to register failed)
- fix sip dscp which was reversed 


8.4RC19 13.12.2013
==================
- fix wget issue - move parameter --no-check-certificate to first after command wget
- set FOREIGN_KEY_CHECKS=0 before drop table 
- fix potential issue with small size of packetbuffer
- use id_sensor when doing reindexfiles which was deleteing records for other sniffers 


8.4RC18 12.12.2013
==================
- for caller number use tag remote-party-id (if exists) and caller contain anonymous so the CDR still contains number of the caller 
- do not reindex files repeteadly if the last cdr is old. 
- fix freebsd compilation on 32bit
- do not terminate call prematurely when SIP 501 "Not Implemented" is received
- implement destination_number_mode which will take number from INVITE URI or To: SIP header. If destination_number_mode = 1 it will always save number from To: header. If destination_number_mode = 2 it will take number from INVITE URI. default: destination_number_mode = 1
- if SSRC changes during call and there is another SSRC change to previous one and the RTP packet has the same seq and timestamp does not reflect the gap - do not report huge packet loss
- disable sendfile flood if not present in old kernel
- suppress warning in query SET GLOBAL innodb_stats_on_metadata=0
- do not print "End of pcap file, exiting" to syslog
- optimize thread0 packetbuffer size


8.4RC17 5.12.2013
=================

- packetbuffer mirroring - add support for multiple sender connections to one central receiver. Now the receiver will accept unlimite number of connections at the same time. 
- fix incorrect 200 OK last response code when CANCEL is confirmed by 200 OK without request terminated. 
- if voip SIP device (with source IP 1.1.1.1) sends in SDP that it wants RTP for example to 10.0.0.1 and port 10000 the call also sniff RTP from 1.1.1.1:10000 or to 1.1.1.1:10000 which does more problems than it solves. Now this behaviour is changed and if you need this option back you can enable it sdp_reverse_ipport=yes. This change fixes RTP packets assigned to wrong call and other weired problems. 
- When scanpcapdir is being used, voipmonitor will by default read any new file that is created in that directory as soon as the file is closed.  This is the normal setting if your packet capture software is tcpdump.  If you are using a different packet capture software, you may need to change this setting to "rename" if that software writes to a temporary file, closes it, and then renames it to something else after the file is closed.  Default setting is "newfile" (Rob Gagnon)


8.4RC16 3.12.2013
=================

- support compile on FreeBSD (tested on 8.3) 
- fix parsing custom headers for sip methods RES3XX, RES4XX, RES5XX, RES6XX
- do not report mysql error when recreating mysql stored functions. do not drop / create those functions if they are not different 
- fix rare issue with new invite after last sip response 487
- Close SIP and SIP+RTP dump files ASAP to save some number of opened files and memory (Rob Gagnom)


8.4RC15 29.11.2013
==================
- fix excessive loss report for some cases in case of reinvite (regression since 8.4RC12)
- fix SDP: sometimes SDP could not be parsed if the IP was the last line in SDP in the packet thus ignorind the whole RTP
- fix parsing tags which can be terminated also by only new line instead of CRLF
- add uptime to sniffer statistics
- enhance drop old partitions
- add option create_old_partitions for create old partitions


8.4RC14 27.11.2013
==================
- do not flood log with "to much INVITEs in this call" show the message only once
increase MAX_IP_PER_CALL from 30 to 40
- add upgrade, restart and sniffer stats via manager
- use global db handler sqlDbCleanspool for all cleanspool operations


8.4RC13 21.11.2013
==================
- fix IP header len when defragmenting packet which prevents to see all data in SIP history and in wireshark. 
- fix parsing of useragent - broken since 8.4 RC4


8.4 RC12 18.11.2013
===================
- fix reloading capture rules which dissapeared due to mysql race condition 
- fix mysql issues causing random corruption when doing reload
- fix long term issue (all versions) where the .graph file in CDR detail (in the GUI) suddenly jumps if sequence numbers changes either due to packet loss or due to VAD. Now graphs should not move up/down sud
denly
- fix low MOS score for adaptive jitterbuffer in case a SIP session reinvites and RTP packets does not correctly increases sequence numbers or timestamps
- fix low MOS score for adaptive jitterbuffer even for 5 packet loss caused by normal shrink/grow internal jitterbuffer simulator.A
- fix inappropriate packet loss report if a SIP session reinvites and RTP stream with the same SSRC has hole which is normal (although the wireshark still report packet loss as well as any RFC RTP compliant RTP analyzer)
- take min MOS score from fixed2 jitterbuffer simulator by default which eliminates low mos score due to f1 and adapt sensitivness
- disable cleanspool functions if not set parameters


8.4 RC11 13.11.2013
===================
- do not flood syslog when RTP files cannot be created
- fix cleaning spool directory - delete files which are not indexed and run reindex in case of inconsistency
- add pcap size limit - configuration option maxpcapsize (in MB)
- implement autocleaning in cachedir and automatically move files when sniffer was interrupted and restarted
- fix convert_dlt_sll2en10 parameter


8.4 RC10 6.11.2013
==================
- fix MySQL race condition causing crashes and undefinite cleaning of parition each second when mysql cleaning enabled. 
- fix ebug in syslog
- fix memory leak caused by cleaning which should not run when in mirror sender mode
- implement GRE tunnel de-encapsulation


8.4 RC9 1.11.2013
=================

- fix new graph binary format (since 8.4RC5)<
- fix reindexfiles which has problem if directory has more then 2GB
- clarify that the id_sensor is number between 1 - 65535 (16bit number)
- fix potential crash in RTP processing
- implement reading from list of interfaces which is better alternative to interface = any. Now it is possible to sniff on eth0 and eth2 within one sniffer - interface = eth0,eth2. Reading is done in separate threads which takes benefit over interface = any
- fix detect partitions in cdr% tables when upgrading from older versions
- do not create partitions every hour but every 12 hours 
- add option  disable_partition_operations which will not create partitions (in multisniffer environment all other sensors should have disabled partition creation which is redundant) 
- escape database name in sql queries ('-' caused problems) 


8.4 RC8 8.10.2013
=================

- fix implementation of multipart/mixed SIP messages in 8.4RC4 which caused memory corruption and crashes. 

8.4 RC7 8.10.2013
=================

- fix broken logic in RC6 which ignored all RTP

8.4 RC6 8.10.2013
=================

- do not create RTP pcap file for every sip call but only if there is actually RTP which saves a lot of I/O 
- fix crash on some 32 bit platforms
- fix recent deduplication fix which was wrong and it leads to remove packets which were not duplicated because it took less data than actual data (12 bytes less). This fixes T38 decoding in GUI for example.

8.4 RC5 2.10.2013
=================

- do not send SID frames to G729 decoder which fixes garbled sound for G729 RTP streams. 
- implement binary format for graph file which makes *.graph files 5 time smaller which greatly reduces disk space and I/O operations. This needs the latest GUI 


8.4 RC4 30.9.2013
=================

- Implement multipart/mixed SIP messages which voipmonitor ignored if there was SDP (for example SIP messages with SDP and ISUP)
- following issue was fixed only when reading pcap files but not in realtime sniffing - prior verison 8.0.1 deduplicate (which is default off) was comparing only data without ip header and udp header so duplicate packets was matched also in case when IP addresses differs. This was good for some cases but it leads to completely ignore RTP streams in other cases. Now default option is to check duplicates based on not only data but ip headers too. To change this set deduplicate_ipheader = no. default = yes.deduplicate_ipheader = yes- Do not add SIP destination IP to proxy table if INVITE fails and proxy tries another destination
- fix hangup indication (cdr.whohangedup) in case call travers through proxies (called was marked as hanged up always)- if cdr proxy feature is enabled (which is by default) and invite goes to fail-over write the last IP of the last SIP and not the first (failed) one.
- try to fix more files cleaning issues 
- repack statically 64bit binary with the latest libc version to solve crashes on centos and other systems


8.4 RC2 25.9.2013
=================

- fix errors in syslog when moving files from cachedir / spooldir and fix potential clean procedure leaks
- If cdr proxy is enabled (which is by default) fix called IP in cdr and false proxy record in proxy column in case called make reintive


8.4 RC1 23.9.2013
=================

- fix ODBC driver (tested for mssql) which was not maintained for a longer time
- fix traffic speed in verbose output 
- parse caller and called number in function save_live_packet if call is NULL which allows to filter OPTION and SUBSCRIBE in GUI live sniffer
- fix callslimit which did not worked at all
- reorganize addtofilesqueue which should solve some graph files left by cleaning process
- fix audio decoding for comfort noise and dtmf - do not create new RTP instance if payload is one of 13,19,101


8.3 11.9.2013
=============

- lock mysql.connect function which causes crash in statically linked binary
- implement filter_ip|telnum.script flag - this will run shell script for call matching the filter rule (new filtercommand option).
- add cachedir queue and throughput statistic to syslog. Example - cdq[10][1.1 MB/s] 10 files in queue waiting to be moved, 1.1MB/s is average transfer rate.  
- Do not store body in SIP MESSAGE type after conte-lenght 
- push REGISTER mysql queries into queue and release call structure immediately to not block memory. This fixes problem when sip register is enabled and mysql slows down for a while. 
- index also zero lenght pcap and graph files so its deleted by cleaning procedure. 
- fix audio sync issue in case silence detection is enabled and two consecutive mark bits are seen 


8.2 9.9.2013
============

- add support for OPUS codec 
- new option cdr_ua_enable (default yes) this option allows to skip storing cdr.a_ua and cdr.b_ua - this is workaround for those who has extreme cdr rate and number of user agents in database cdr_ua table is over 1000 and CPU is not powerfull enough to store cdr in real time. In future this option will be removed once we optimize this rutine. default = yes
- call mysql_library_init() which would potential mysql crash on init (since 8.1)
- lock listMAP structure which fixes random crash when analyzing sip resigters and looking at active calls at the same time (all versions) 
- fix mysql queries in queue if importing pcap file


8.1.2 5.9.2013
==============

- implement reindexfiles manager command which is needed to recover cleaning when database deleted or index files were deleted 


8.1.1 5.9.2013
==============

- fix 8.1 mysql crashing 
- fix deadlock when heap is full 


8.1 4.9.2013
============

Optimizations
-------------
- remove Call structure immediately and do not wait for CDR to be written. This allows buffering milions of SQL INSERTS with much less memory footprint. 
- signifficantly speedup startup : set global innodb_stats_on_metadata=0; Slow query on information_schema.tables

Bug fixes
---------
- fix capture rules which did not matched if caller number matches partialy with some rule and there is called rules which should match but it will be never matched because internal b-tree cursor was not reset. this bug is in all versions < 8.1.
- packetbuffer fixes: fix indication heapoverrun, fix spam indication MEMORY IS FULL in syslog, add indication about processing block size in heap statA
- fix new cleaning implementation 
- set mysql flag CLIENT_MULTI_RESULTS which fixes PROCEDURE voipmonitor.create_partition can't return a result set in the given context
- prior verison 8.0.1 deduplicate (which is default off) was comparing only data without ip header and udp header so duplicate packets was matched also in case when IP addresses differs. This was good for some cases but it leads to completely ignore RTP streams in other cases. Now default option is to check duplicates based on not only data but ip headers too. To change this set deduplicate_ipheader = no. default = yes.deduplicate_ipheader = yes

New features 
------------
- new option allow-zerossrc - SSRC in RTP headers must not be equal zero according to RFC so voipmonitor is ignoring such RTP by default. If you still need to parse such packets enable it in voipmonitor.conf allow-zerossrc =yes
- convert from dlt ssl to en10 for pcap save (via configuration parameter convert_dlt_sll2en10) - this is needed only if you need to merge two pcap files with different encapsulation 
- add res and virt memory counters into syslog stat


8.0.1 23.8.2013
===============

- fix cdr proxy column which contains duplicates in case of sip reinvites
- disable default "filter = udp or (..." in voipmonitor.conf template file which does not work if interface = any 
- In case the RTP stream within the same SSRC changes codec, split the stream so in sip history it will show the change.
- fix RTP stream in sip history which shows number of received packets - 2
- fix skipdefault and implement skip in capture rules by tel number (forgot to implement)
- fix new spool cleaning in case cachedir is enabled- fix new spool cleaning which did not count graph file sizes (disk space was higher then set because of this) 


8.0  21.8.2013
==============

Optimizations 
-------------
- redesign internal packet buffering - packets are read from kernel ringbuffer into dynamically allocated buffer:
* two memory copy is removed saving ~10% cpu 
* static sized vmbuffer is replaced by dynamically allocated heap buffer which is allocating up to set size. Size of this buffer is now not limited (vmbuffer was limited to 4GB). Default limit in configuration is 2GB 
* buffer can be compressed in memory (~50% ratio) default enabled 
* if memory buffer runs out of space disk buffer will be used (if enabled) and compressed (if enabled)
* buffer can be sent over TCP to another voipmonitor instance and compressed (if enabled) which is now new recommended option for software mirroring. In case the transmission is interrupted packets are will buffer into memory or disk (compressed if enabled). 
* new debug information (if at least -v 1) informing about heap size and overruns and three main threads CPU utilization
               
- reimplement cleaning spool directory. find command was replaced by indexing and now it is possible to set total size or maximum days for all files and sip / rtp / graph / audio separately
- if libpcap reports packet loss, save number 100 to cdr.bye which will indicate that snifer was loosing packets
- add partitions for register_state and register_failed and message tables
- Remove dependency on mysql scheduler and create table partitions within sniffer service thread- create database if it does not exists
               
New features    
------------    
- implement skip flag in capture rules which allows to ignore whole call based on IP and Telnum filters
- add last sip response into listcall 
- implement new option cdrproxy = yes (enabled by default) : in case SIP session travels accross several proxies (and Call-ID header does NOT change) and you would like to track all sip proxies and make them searchable in GUI / database. If disabled in cdr.sipcalledip will be destination IP from the first INVITE. If enabled in cdr.sipcalledip will be destination IP from the last INVITE and all IP from middle INVITE will be inserted in cdr_proxy table. In the GUI is new proxy column.
- implement skipdefault option in voipmonitor.conf if = yes it will ignore all calls unless skip flag is true in capture rules (sql.filter_*)
- implement database partition auto cleaning (voipmonitor.conf)
- implement dscp configuration option which will add dscp to cdr table. The dscp column holds dscp ip flag for sip and rtp caller/called. GUI will follow soon.   - add support for CLEARMODE codec 
- add custom_headers for SIP message

Bug fixes
--------- 
- fix audio play (garbled sound) remove data from RTP packets beyond IP datalen which causes garbage in RTP packet for codec decoders (broken in all sniffer versions). This is in case the ethernet frame has checksum at the end of packet. 
- modify mysql procedure for create partition - suppress create partition if table does not exists or contains no partitions 
- fix critical bug (all sniffer versions) with call_id boundary check which can cause crash.
- fix custom headers - remove limit 128 chars and crop to max size 255 chars
- fix capture rules - if there is NULL in column ignore the flag completely. This fixes issue when the rule is created and user wants to override only one flag and leave others untouched (NULL)
- log error and reconnect to mysql in case of "query error in [drop procedure if exists __insert_10]:  Commands out of sync; you can't run this command now"- fix memcpy sizeof on various places                

7.1.3  11.7.2013
================

Enable mysql scheduler on mysql connect "SET GLOBAL event_scheduler = 1" which is needed to create partitions for cdr table. 


7.1.2  10.7.2013
================

fix savertp = header which should store only RTP headers and not full payload. Fix override in capture rules in filter_ip sql table (and capture rules in GUI) if RTP is turned off it will now not store RTP even with savertp = header. If RTP is enabled it will now store full RTP packets including audio even savertp = header.


7.1.1  3.7.2013
===============

- fix writing first batch of CDR after reconnecting to database. -> MySQL server has gone away -> Commands out of sync; you can't run this command now
- when receiving INVITE after BYE extend call timeout about 1 minute after each new packet and not after rtptimeout
- fix not closing call in some corner cases - it can happen that the call is in memory for a long time 


7.1  2.7.2013
=============

- do not parse SIP packets after content-lenght. Some implementations sends bigger packet with garbage at the end of packet which should not be parsed causing overwriting headers 
- fix error in mysql insert for very rare cases
- output mysql queries into syslog instead of cout (if verbosity > 1)
- fix -s parameter which did not worked at all
- run readdump_libpcap in separate thread to be able to read real % for libpcap reading thread
- add qring status into syslog state
- when upgrading from older sniffer do not create new tables partitioned when the cdr table is not partitioned which will cause stop working writing CDR with RTP or DTMF next day
- fix T38 for case when the same RTP port is reused in reintive which was treated as no t38 in this case
- implement inotify events for pcapscandir which means that now the name of the pcap file in this directory can be any name which means more pcap files can be put there from various sources - events are filte
red only when the file is closed for write which means you can transfer files directly to the directory
- store CDR sooner when the BYE messages is not properly closed (missing ACK etc) 


7.0.1
=====

- fix capture rules direction logic. It was always only by destinatino instead of "both". Broken since version 7


6.5.4 -> 7.0 10.6.2013
======================

New features
------------
- implement Cisco SKINNY (SCCP) VoIP protocol (still beta) 
- use MySQL partition feature by default. 
- implement filter by SIP type into live sniffer
- redesign realtime audio listening (g711 ulaw/alaw only at the moment) 
- enable storing custom sip headers to database column cdr_next.custom_header_headername. You can specify more headers # delimited by ";". WARNING - when you enable this feature voipmonitor will autoupgrade cdr_next table which can take # hours depending on how large the table is. In GUI there is new section Settings#Custom_headers. WARNING - when you enable this feature voipmonitor will autoupgrade cdr_next table which can take hours depending on how large the table is INFO: in GUI there is new section in Settings - http://www.voipmonitor.org/doc/Settings#Custom_headers
- print backtrace to syslog in case voipmonitor crashes
- detect duplicate packets (if enabled) even if they aren't the "next packet". Patch provided by Steve Davies <steve@connection-telecom.com>
- implement storing DTMF to new cdr_dtmf table for RFC2833 and SIP INFO
- add convertchar option to voipmonitor.conf

Bug fixes
---------
- fix race condition which can lead to crash if ringbuffer is short and ip traffic is large and there are IP fragmented packets and ringbuffer runs faster then voipmonitor can handle
- fix TCP SIP reassemble logic which were mixing packets between pcap files in certain cases. 
- jitterbuffer f1 was to much sensitive reporting loss although delays was < 10ms
- fix low MOS score for calls which contains RTP DTMF (and fix audio sync too) 
- never count MOS for calls where packets are < 100 which also causes low MOS for no reason. 
- fix ip capture rules on 32 bit platform - all higher numbered IPs overlapped due to atoi limitations on 32bit
- fix "call not found" for listen manager command on 32 bit platforms. 
- create spool and cachedir directory upon start which fixes segfault in case cachedir does not exists
- if packet contains trailing header (VSS monitoring ethernet trailer for example) deduplication did not worked if one packet has it and the other not.
- do not save deduplicated packets in pcap file if this feature is enabled
- do not list calls in manager api which is hanged up or canceled or failed. There was always 5-30 second delay. 
- fix saving REGISTER pcap files in case cachedir is used
- fix missing RTP stream in CDR and short graph files (caler or called) in case sniffer see multiple RTP streams (more than 2) within call- treat REGISTER 403 response as failed too (not only 401)- if sniffer stores RTP packets but only headers (savertp = header) and there is rule set in capture rules to record full RTP - it was not recording full RTP packets- "libpcap or interface dropped some packets" counters are unsigned - fix showing negative numbers in syslog
- reformat help text to 80 chars and sort it alphabetically 


Source: README-changelog.txt, updated 2014-01-28