FreeSWITCH
The FreeSWITCH project and Static Analysis
The FreeSWITCH project is nearly ten years old, and the FreeSWITCH git repo has commits from about 214 different authors and over 3.2 million lines of code with 875k of those lines under the src directory. Some of the maintenance challenges associated with such a large software project include: detecting and resolving human errors such as typos, logic inversions, and dangerous formatting. Implementing code review is a must, and there are different techniques common to the industry used to reduce the defect density and standardize the code format: autobuilding against multiple compilers, routine testing, and static code analysis. The core development team at FreeSWITCH uses all three techniques.
Both autobuilding and routine testing can be applied with in-house system workflows. Routinely building the packages against different compilers allows for consistent tracking to make sure additional commits won’t break existing code in any of the prepackaged builds. This also allows for consistent handling of packages for multiple operating systems. By autobuilding against different compilers, we can make sure that a commit for one set of packages doesn’t break the builds for the others. Routine testing is another viable option for code review, and routinely testing and implementing a bug tracking system allows the community members to report bugs found in unique environmental circumstances. Open-source software relies on many different eyes to keep bugs shallow, and this practice opens up different configurations and applications of the software for a more thorough testing. Each year hundreds of tickets are opened on the FreeSWITCH project JIRA, and the developers work tirelessly to address all of them.
Static analyzers can scan thousands to millions of lines of code without getting tired and usually don’t require many manual steps to run. The relationship between a project’s developers and the creators of a static code analyzer can be a symbiotic one. The analyzer works by using a database of multiple tiers of positive and negative heuristics. First, it runs the low cost patterns against the entire code base to generate a large list of possible issues, then runs more accurate and higher cost patterns against the bug candidates to reduce the number of false positives, and finally evaluates the severity and more accurately classifies the issues. Once the analyzer has completed its run, it requires an experienced software developer familiar with the code base to review each issue reported.
Most static analyzers are built to report possible candidates in the first pass, and thus immature analyzers are perceived to red flag everything. They tend to create a lot of noise by reporting a large number of false positives and misclassifying the severity of issues. After the developers for the software being analyzed have reviewed the results of the analysis, they can give specific examples of why they determined it to be a false positive which can be used to improve the static analyzer’s heuristics. As the database matures, the quality of the negative heuristics improves and reduces the volume of false positives. The advantage here is that each report triaged leads to a commit resolving a bug or an improvement to the analyzer.
The team over at Program Verification Systems have built a static analyzer for C/C++ code that integrates into Microsoft Visual Studio. According to their website, the program allows the user to scan of lines of code to locate various typos and other errors. Their analyzer supports C/C++, C++/CLI, and C++/CX with support for C# language coming soon. The PVS-Studio is also available as a standalone utility through the distribution packages which allows for viewing the analysis logs on a machine without Visual Studio. It can also be used to track multiple sub-builds and analyze non-standard build systems. The reports for the open-source projects that have been analyzed with this software can be found on their website in the Checked Projects section.
The FreeSWITCH team ran the open-source FreeSWITCH project through the PVS analyzer. A decent majority of the issues reviewed were determined to be minor Windows-specific bugs not previously flagged by compilers currently implemented by the team. The team is continuing to review and resolve the alerts from the analysis and have integrated this analyzer into the code review workflow. They look forward to continuing this symbiotic relationship with the goal of improving the quality of software.
If you would like to replicate the results you can use the following steps.
- Set up an instance of Microsoft Windows 10, install Microsoft Visual Studio 2015, and install the analyzer from the http://www.viva64.com/en/ website.
FreeSWITCH Week in Review (Master Branch) November 28th – December 5th
Our features this week include: improvements to the auto bitrate features in mod_conference, the addition of the Debian install script for the verto communicator, and separate controls for gain and volume for verto. Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! This week we have Tsahi Levent-Levi talking about WebRTC! And head over to freeswitch.com to learn more about FreeSWITCH support.
New features that were added:
- FS-8595 [mod_conference] Improve auto bitrate in personal canvas mode and do not let auto bitrate exceed native picture size
Improvements in build system, cross platform support, and packaging:
- FS-8614 [verto_communicator] Add Debian developers install script and update README.md to reference it
The following bugs were squashed:
- FS-8585 [mod_commands] Expanded {} and <> to [] for each dial string in group_call to allow for multiple device registrations for the same user
- FS-8589 [mod_conference] Fixed using conference playback with full-screen=true not working correctly
- FS-8354 [mod_conference] Fixed G722 audio issues with mod_conference caused by previous commit fab43547
- FS-8602 [mod_conference] Fixed conference not auto-generating layouts properly when callers with no camera are present
- FS-8615 [mod_conference] Fixed a crash when quickly changing layouts and setting reservation ids
- FS-8588 [mod_httapi] Fixed a crash found while fixing unreliable digit collection
- FS-8599 [verto] Removed a workaround for Mozilla that is no longer needed for video size
- FS-8590 [verto_communicator] Fixed sending malformed vid-res-id command when changing layouts by treating no res-id the same as clear
- FS-8612 [core] Fixed a rare IVR originated calls crash due to read codec leak
- FS-8619 [mod_rayo] Reply with conflict stanza error if bind is attempted with duplicate JID. Improve error handling when ‘ready’ callback fails.
The FreeSWITCH 1.4 branch had a couple of bug fixes back ported. And again, keep in mind that 1.4 is quickly moving toward end of life and won’t be supported any longer except for high level security issues.
The following bugs were squashed:
- FS-8582 [mod_httapi] Fixed a crashed caused by null URL being passed
ClueCon Weekly – Nov 18, 2015 – David Taht
Links: http://www.dslreports.com/speedtest
ClueCon Weekly – Flowroute Justin Grow – November 11, 2015
Links:https://support.flowroute.com/customer/en/portal/articles/2205573-freeswitch—add-flowroute-as-sip-gatewayhttps://developer.flowroute.com/
FreeSWITCH Week in Review (Master Branch) November 21st – November 28th
This week we had a few features including: allowing building with OpenSSL without EC support, a video quality parameter to allow for conference configuration for verto, and some improvements to conference layouts for verto as well. If you haven’t already, it is highly recommended that you upgrade to the newest 1.6 release as soon as possible to avoid the vulnerability from last week. Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! This week we have James Tagg! And head over to freeswitch.com to learn more about FreeSWITCH support.
New features that were added:
- FS-8568 [core] Allow building using system OpenSSL without EC support
- FS-8293 [verto][mod_conference] Made sanity level based on 1080p and added a video-quality conference profile parameter for specifying the motion factor when calculating video bitrate, defaulting to 1.
- FS-8264 [verto_communicator][verto] Adapted the layout select to new response, added a separated menu in members list to set its reservation id, and added all the reservation IDs in the return of “list-videoLayouts” command
- FS-8433 [mod_sofia] Allow hangup cause to be set inside redirect data
Improvements in build system, cross platform support, and packaging:
- FS-8592 [Windows] Fixed some simple compiler errors
- FS-8578 [mod_verto] Fixed build error for missing __bswap_64 on osx
- FS-8152 [Debian] Make sure to package the image directories too
- FS-8576 [Debian] Fixed a package upgrade issue related to the fonts being installed in multiple packages
The following bugs were squashed:
- FS-8569 [mod_conference] Fixed undefined symbol conference_cdr_test_mflag
- FS-8574 [mod_conference] Fixed a read write lock issue
- FS-8566 [core] Fixed calls failing when put on hold in bypass media mode with inbound late negotiation set to false
- FS-8573 [core] Fixed one way audio after resuming from hold in bypass media mode
- FS-8575 [core] Fixed DTMF not being passed from a to b during rfc 2833 events
- FS-8582 [mod_httapi] Fixed a crashed caused by null URL being passed
The FreeSWITCH 1.4 branch had a couple of bug fixes back ported as well as the release of 1.4.26. And again, keep in mind that 1.4 is quickly moving toward end of life and won’t be supported any longer except for high level security issues.
New features that were added:
- FS-8547 [core] Add error log into stats to log when quality impacting events begin and end
The following bugs were squashed:
- FS-8537 [mod_lua] Fixed a segfault caused by passing nil to various lua functions
FreeSWITCH Training from December 9th-11th!
2600hz is hosting a FreeSWITCH boot camp! Get in on the action to learn the ins and outs of FreeSWITCH! The FreeSWITCH Bootcamp is an intense three-day training, providing in-depth coverage of FreeSWITCH installation, configuration, maintenance and programming so that you can build your business. The bootcamp will be hosted in the brand new office in beautiful San Francisco. Go into the bootcamp as a Novice — and come out as a FreeSWITCH guru. Early bird pricing lasts until November 27th, but register now as there are limited spaces available! https://goo.gl/zbS4tP
FreeSWITCH Week in Review (Master Branch) November 14th – November 21st
This week we had a number of features and a very important security fix listed below. It is highly recommended that you upgrade as soon as possible to avoid this vulnerability and you can find out more about the 1.6.5 release here. Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! This week we have Martin O’Shield from Windy City SDR! And head over to freeswitch.com to learn more about FreeSWITCH support.
Security issues:
A bug allowing for a remotely exploited DoS attack through custom crafted network traffic via JSON has been fixed. We classify this issue as High Severity. A patch was added by Anthony Minessale in commit 4bdca81 to resolve this issue. All versions from 1.4.4 through the previous release are vulnerable. We highly recommend updating to the current release version as soon as possible.
https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-7392
New features that were added:
- FS-8543 [mod_conference] Improve mute handling on conference and WebRTC
- FS-8546 [mod_conference][mod_verto] Make original video demo backward compatible with livearray-json-status
- FS-8529 [mod_conference] Added video-floor to personal canvas mode
- FS-8401 [verto_communicator] Added Speaker selection in settings model and video page and fixed model to modal
- FS-8545 [verto_communicator] Improve controls for screen share, fixed a read lock regression, do not allow video floor on a member with a reservation id set, and add missing code to deal with screen share part
- FS-8549 [mod_http_cache] Add support for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables in S3 profiles
- FS-8547 [core] Add error log into stats to log when quality impacting events begin and end
- FS-8559 [mod_shout] Add “mpga” to the list of supported extensions
Improvements in build system, cross platform support, and packaging:
- FS-8333 [build][Debian] Added mod_hiredis.deb
The following bugs were squashed:
- FS-8537 [mod_lua] Fixed a segfault caused by passing nil to various lua functions
- FS-8527 [mod_conference] Do not send the video of last_video_floor_holder to video_floor_holder if the videos are related
- FS-8542 [verto_communicator] Fixed the tooltips of video controls
- FS-8053 [mod_conference][mod_sofia] Fix for WebRTC’s SDP containing a=sendonly for video, but the client still receiving the video stream
- FS-8553 [config] Include verto_contact into the dial-string in the samples
- FS-8556 [mod_verto] Screen shares are not recoverable so do not try
- FS-8293 [mod_verto] Fixed some regressions where speed test caused excessive downlink bandwidth
The FreeSWITCH 1.4 branch had this week’s previously mentioned security fix and a bug fix back ported as well as the release of 1.4.26. And again, keep in mind that 1.4 is quickly moving toward end of life and won’t be supported any longer except for high level security issues.
- FS-8537 [mod_lua] Fixed a segfault caused by passing nil to various lua functions
The FreeSWITCH 1.6.5 release is here!
The FreeSWITCH 1.6.5 release is here! This release contains everything since version 1.6.2. This is a pretty big release for the 1.6 branch so upgrading now is a really good idea. This is a routine maintenance and security release and the resources are located here:
Release files are located here:
- Tarball: http://files.freeswitch.org/releases/freeswitch/freeswitch-1.6.5.tar.gz
- Packaging: https://freeswitch.org/confluence/display/FREESWITCH/Installation (Please Note the updated location for 1.6 packages)
Security issues:
A bug allowing for a remotely exploited DoS attack through custom crafted network traffic via cJSON has been fixed. We classify this issues as High Severity. A patch was added by Anthony Minessale in commit 4bdca81 to resolve this issue. All versions versions from 1.4.4 through the previous release are vulnerable. We highly recommend updating to the current release version as soon as possible.
https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-7392
New features that were added:
- FS-8243 [mod_opus] Improve the way FEC info is detected within frames by adding support for ptimes higher than 20 ms for FEC detection
- FS-8161 [mod_opus] Keep FEC enabled only if loss > 10 ( otherwise PLC is supposed to be better)
- FS-8179 [mod_opus] Improvement on new jitter buffer debugging (debug lookahead FEC)
- FS-8313 [mod_opus] Introduced new configuration setting ‘decoder-stats’ to show decoder stats at end of call (how many times it did PLC or FEC)
- FS-8254 [verto_communicator] Create a source map file
- FS-8263 [verto_communicator] Created the reset banner action, floor and presenter badges, and lock icon in floorLocked status
- FS-8288 [verto_communicator] Added an About screen with version information and links to FS.org and added a link to Confluence with documentation for VC
- FS-8289 [verto_communicator] Make mute/unmute audio/video clickable
- FS-8290 [verto_communicator] Automatically mark dedicated encoder if out/in bandwith isn’t set to ‘Server default’ and adding help text on how to enable dedicated remote encoder
- FS-8030 [verto_communicator] Added ngSanitize as a dependency, vertoFilters module and picturify filter and changed chat image display behavior (break line before rendering).
- FS-8293 [verto_communicator] Added built in speed test feature which gives feedback of available bandwidth and customizes call settings based on bandwidth available
- FS-8401 [verto_communicator] Added Speaker selection in settings modal and video page and refactor the sinkid function into verto lib
- FS-8545 [verto_communicator] Fixed a read lock regression and do not allow video floor on a member with a reservation id set
- FS-8195 [core] Compatibility with Solaris 11 process privileges
- FS-8547 [core] Add error log into stats to log when quality impacting events begin and end
- FS-8321 [core] Add variable media_mix_inbound_outbound_codecs to mix inbound and outbound codecs. BEHAVIOR CHANGE
- FS-8281 [core] Expose SRTP and SRTCP crypto keys as channel variables to aid with debugging
- FS-8287 [mod_local_stream] Refactor local_stream API to be more consistent and add auto complete
- FS-8375 [mod_conference] Add the field conferenceMemberID to the event broadcasted to inform a verto client about joining a conference.
- FS-8543 [mod_conference] Improve mute handling on conference and WebRTC
- FS-8545 [mod_conference][verto_communicator] Improve controls for screen share
- FS-8546 [mod_conference][mod_verto] Make original video demo back-compatible with livearray-json-status
- FS-8529 [mod_conference] Added video-floor to personal canvas mode
- FS-8377 [mod_hiredis] Adding expanded support for limit_* functionality and fixed the handling of hiredis limit release when using an interval. The expectation for interval is to NOT decrement the limit.
- FS-8380 [mod_av] Improve the handling of vw and vh core file parameters to avoid video cropping and crashing
- FS-8415 [mod_sofia] Added support for early media with 180 using early_use_180=true
- FS-8416 [mod_xml_radius] Added the ability to format the variable in the param field
- FS-8534 [rtcp] Added calculated RTT average (RTCP SR) value to help with detecting congested network links
- FS-8549 [mod_http_cache] Add support for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables in S3 profiles
- FS-8559 [mod_shout] Should have “mpga” in it’s list of supported extensions
Improvements in build system, cross platform support, and packaging:
- FS-8236 [build] Fixed building without libyuv on compilers that throw an error on unused static function and fixed ifdefs for building without libyuv
- FS-8350 [build] Fix Windows build errors.
- FS-8389 [build] Fixed msvc 2015 build warnings
- FS-8316 [build][Debian] Fixed new build warning from latest clang and resolved the build warnings in the modules too
- FS-8255 [Debian] Fixed codename changes since Jessie was released as stable
- FS-8271 [Debian] Simplify package building for the default case
- FS-8270 [Debian] Fix for package installation failing if /etc/freeswitch/tls is missing
- FS-8285 [Debian] Removed heart attack inducing warning message when updating deb packages
- FS-7817 Removed use of _NONSTD for Windows builds of spandsp, so (hopefully) eliminate compatibility problem
- FS-8271 [Debian] Adding some logging, and more cautious handling of spaces in parameters. Now the default will build packages with the upstream FS package repos. This is a change in the default behavior of the Debian packaging system with the justification that in 1.6 it is now required to use the FS public repo for dependencies because system dependencies have been removed from the FS codebase which used to be included. And defaulting to automatically download the binary dependencies because without major changes to package building in cowbuilder(which is the primary supported method of building FS packages), you can’t access the network to build the binary packages from the source package. If using system apt repo list, then include the supplementary ones too
- FS-7928 FS-7618 [Debian] Systemd and package build improvements
- FS-8362 [Debian] Now if you install with freeswitch-all you will get the default fonts too
- FS-8426 [Debian] Put freeswitch.pm into /usr/share/perl5 so it can be found on both Wheezy and Jessie
- FS-8333 [build][Debian] Added mod_hiredis.deb
- ESL-111 [python] Fixed esl/python/Makefile to create install directory
- FS-8233 [automation] In order to clean up build dependencies for the automated tests, convert the tests/*/Makefile.am into an include file for the top level Makefile.am. This will greatly simplify dependency tracking, and allow tests to be rerun easily on FS source code changes.
- FS-7820 [automation] Use a more appropriate function for printing diagnostics
- FS-8194 FS-7910 FS-7937 Various systemd service improvements
- FS-8298 [mod_gsmopen] Fixed a build error
- FS-8398 [Ubuntu] Added event_handlers/mod_amqp to avoided modules for Ubuntu 14.04 Trusty
- FS-8239 [mod_av] Fixed the default value to avoid failed build on CentOS 7
- FS-8427 [build][mod_av] Fixed an incompatible type for %ld in prinrtf compiler error
- FS-8248 [mod_event_socket] Moved python binaries into site arch path to match standards
The following bugs were squashed:
- FS-8221 [verto_communicator] Fix number in call history
- FS-8223 [verto_communicator] Fixing members list layout when callerid is too long
- FS-8225 [verto_communicator] Avoid duplicate members when recovering calls
- FS-8214 [verto_communicator] Better handling calls in VC, answering them respecting useVideo param
- FS-8291 [verto_communicator] Fixed contributors url
- FS-8229 [verto_communicator] Changing moderator actions bullet menu color to #333
- FS-8219 [verto_communicator] Fix for camera not deactivating after init or after hangup
- FS-8245 [verto_communicator] Fix for Video Resolutions available in “Video Quality” drop down not always correct
- FS-8251 [verto_communicator] Factory reset now clears all local storage
- FS-8257 [verto_communicator] Fixed configuration provision url because configuration doesn’t work with `grunt serve` and non pathname urls
- FS-8273 [verto] [verto_communicator] Clear the CF_RECOVERING flag in a spot that was missed
- FS-8260 [verto_communicator] Prompt for banner text
- FS-8067 [verto_communicator] When no email is present make sure mm is the default avatar in the circle this way the talk indicator works on PSTN and SIP callers.
- FS-8247 [verto_communicator] When websocket disconnects go to splash screen to wait for the reconnect
- FS-8300 [verto_communicator] Fixing reload bug so reloading twice is no longer needed
- FS-8331 [verto_communicator] Do not show reconnect splash when user has clicked logout
- FS-8365 [verto_communicator] Fixed a bug with the chat notifications not going away unless you exited and came back to it
- FS-8336 [verto_communicator] Updating mic and video overlay controls upon receiving member update from live array and use conferenceMemberID when checking if the updated member is the local user
- FS-8222 [verto_communicator] Updated getScreenId.js in order to detect plugin issues and attached an ‘ended’ event to screenshare stream in order to detect ‘stop sharing’ click
- FS-8542 [verto_communicator] Fixed the tooltips of video controls
- FS-8556 [mod_verto] Screen shares are not recoverable so do not try
- FS-8293 [mod_verto] Fixed some regressions where speed test caused excessive downlink bandwidth
- FS-8232 [mod_conference] Conference sending too many video refresh requests
- FS-8241 [mod_conference] Fix for conference stops playing video when local_stream changes source
- FS-8261 [mod_conference] Fixed the conference segfaulting when trying to reset the banner
- FS-8297 [mod_conference] A fix for auto STUN switching IPs quickly and WebRTC video not working
- FS-8130 [mod_conference] Fix for micro cut-offs and unstable voice issues and fixed a regression causing excessive mark bit detection in some cases
- FS-8317 [mod_conference] Fix for playing multiple files at once to stack them for immediate playback, sometimes breaking and the floor layer becoming unusable for the rest of the conference.
- FS-8328 [mod_conference] Fixed missing ‘else’ keyword
- FS-8307 [mod_conference] Fixed an issue with the order of codecs causing loss of RTP stream
- FS-8280 [mod_conference] Fixed an issue with FS sending redundant stop-recording event notifications
- FS-8384 [mod_conference] Fixed some locking contention issues between external commands and the video engine
- FS-8527 [mod_conference] Do not send the video of last_video_floor_holder to video_floor_holder if the videos are related
- FS-8053 [mod_conference][mod_sofia] Fix for WebRTC’s SDP containing a=sendonly for video, but the client still receiving the video stream
- FS-8220 [core] Fix for DTMF not working between telephone-event/48000 A leg and telephone-event/8000 B leg
- FS-8166 [core] Mute/unmute while shout is playing audio fails because the channel “has a media bug, hard mute not allowed”
- FS-8252 [core] Fixed a crash in rtp stack on dtls pointer
- FS-8283 [core] Handle RTP Contributing Source Identifiers (CSRC)
- FS-8275 [core] Fix for broken DTMF
- FS-8282 [core] Fix for sleep is not allowing interruption by uuid_transfer
- FS-8315 [core] Fix for rtp_media_timeout not working
- FS-8304 [core] Fix for choppy audio during calls
- FS-8320 [core] Fixed broken ZRTP not responding to HELLO packet
- FS-8338 [core] Fix for ringback not working correctly on stereo channels. Also fixed an issue when setting the ringback variable with an outbound call via the bridge app, if the inbound leg is stereo the ringback tone is still rendered as mono causing the resulting ringback to be higher pitched and incorrect.
- FS-8366 [core] Fixed a segfault in rxfax
- FS-8275 [core] Fixed an issue with broken RFC2833 DTMF
- FS-8368 [core] Reduce logging for audio/video sync because some call lines were repeating too often for callers in a conference
- FS-8372 [core] Fixed a no media bug caused by sofia sending the wrong response to RTP/SAVPF without DTLS
- FS-8381 [core] Reset jitter buffer if period loss is too high
- FS-8382 [core] Fixed a segfault with inbound-proxy-media enabled
- FS-8397 [core] Fixed a race condition incrementing the event-sequence number
- FS-8154 [core] Fixed a segmentation fault occurring while eavesdropping on video call
- FS-8391 [core] Fixed a SDP parsing error for rtcp-fb
- FS-8414 [core] Fixed ptime not updating on codec renegotiation causing audio issues between two legs of a call
- FS-8417 [core] Fixed SIP offering a=sendonly sometimes replying with a=inactive
- FS-8404 [core] Media engine will default to PCMU/PCMA if you don’t specify any codecs
- FS-8411 [core] Replace ping_frame with video_ping_frame in a couple places that were missed causing issues like being unable to record just one side of a video call
- FS-8425 [core] Fix for DTMF sometimes missed on PSTN call
- FS-8240 [mod_local_stream] Fixed a/v getting out of sync when running in the background and added video profile parameter for recording 264 and made it default
- FS-8287 [mod_local_stream] Fixed a segfault from refactor
- FS-8216 [mod_av] Fixed a regression in hup_local_stream from last commit
- FS-8274 [mod_av] Fixed a memory leak caused by images not being freed in video_thread_run
- FS-8318 [mod_av] Fix for recording being out of sync when video from chrome has packet loss
- FS-8392 [mod_av] Fixed rtpmap to allow both H263 and H263+ codecs to be offered
- FS-8373 [mod_av] Fix for bad recording quality when using fast encoding
- FS-8256 [mod_opus] More FMTP cleanup
- FS-8284 [mod_opus] Use use-dtx setting from config in request to callee.
- FS-8234 [mod_opus] Send correct (configured) fmtp ptime,minptime,maxptime when originating call
- FS-8243 [mod_opus] Adding back the missing part removed in 8b088c2 so FEC works in most surroundings
- FS-8295 [mod_opus] FMTP fixes to continue the cleanup of FEC
- FS-8302 [mod_opus] Fix some printing/logging because switch_opus_show_audio_bandwidth() was not returning TRUE/FALSE as expected
- FS-8130 FS-8305 [mod_opus] Fix some warnings and errors caused by dtx and/or jittery webrtc, refactor of last patch, and add suppression of scary harmless message about opus FEC
- FS-8296 [mod_opus] Improve the way Opus is initialized when a call comes in
- FS-8179 [mod_opus] Fixed a regression setting fec_decode breaking output on stereo calls
- FS-8287 [mod_opus] Fixed a segfault from refactor
- FS-8319 [mod_opus] Fixed and cleaned up switch_opus_has_fec() and switch_opus_info() to avoid FALSE positives for packets with FEC at high frame sizes.
- FS-8344 [mod_opus] Toggle FEC ON only on the last frame which is to be packed
- FS-7929 [mod_sofia] Fixed an issue when processing SIP messages while using camp-on
- FS-6833 [mod_sofia] Add content-type header to ack with sdp
- FS-6834 [mod_sofia] Found and fixed a few missing content-types in requests/responses with SDP that were outside the norm
- FS-7834 [mod_sofia] Fixed MOH not working with inbound-bypass-media and resume-media-on-hold
- FS-8115 [mod_sofia] Disabled unnecessary session timer re-invites for webrtc
- FS-8536 [mod_sofia] Update to send Keyframe when getting SIP INFO with picture_fast_update
- FS-7989 [fixbug.pl] Escape double quotes from summary and added more debugging data
- FS-8246 [mod_json_cdr] Use seconds as default value for delay parameter
- FS-8308 [mod_format_cdr] Fix to double encode if urlencoding json that is already encoded
- FS-8311 [mod_voicemail] Fix for leave-message event not containing verbose data for a forwarded voicemail
- FS-8306 [mod_amqp] If the exchange doesn’t exist, then create it, else fail. This resolves several error cases. And now command queues can specify the queue to subscribe to. This enables very interesting use cases that would involve single job queue, and multiple consumers.
- FS-8335 [mod_easyroute] Fixed a small error check that results in error message not being displayed
- FS-8378 [mod_esf] [core] Fixed a crash when using esf_page over loopback when transcoding and added tests for esf over loopback. Also refactor a bit to clarify code and get better debug in gdb
- FS-8370 [mod_rayo] Fixed another place in where a message was freed after being queued for delivery. This resulted in a freed object being serialized, crashing FS
- FS-8413 [mod_lua] Fixed a segfault calling session:getVariable(nil) in lua script.
- FS-8537 [mod_lua] Fixed a segfault caused by passing nil to various lua functions
- OPENZAP-240 [mod_freetdm] Fixed a failure to parse caused by using incorrect length when parsing AT responses
- OPENZAP-238 [mod_freetdm] Several core and gsm improvements including fixing signaling status reporting, a small memory leak, fixing caller id and dnis on inbound calls, span stop functionality, and compilation errors in gcc
- FS-8553 [configuration] Include verto_contact into the dial-string in the samples
- FS-8363 [configuration] Don’t register gateways from directory because it registers over what appears to be ipv6 but doesn’t work correctly
The FreeSWITCH 1.4.26 release is here!
The FreeSWITCH 1.4.26 release is here! This release contains everything since version 1.4.23. And this is a pretty big release and one of the final routine maintenance releases for the 1.4 branch so upgrading now is a really good idea.
The FreeSWITCH 1.4 branch is reaching end of life and the FreeSWITCH Team highly recommends beginning your migration to the 1.6 branch.
This is a routine maintenance and security release and the resources are located here:
- Tarballs: http://files.freeswitch.org/releases/freeswitch/freeswitch-1.4.26.tar.bz2
- Packaging: https://freeswitch.org/confluence/display/FREESWITCH/Installation
Security issues:
A bug allowing for a remotely exploited DoS attack through custom crafted network traffic via cJSON has been fixed. We classify this issues as High Severity. A patch was added by Anthony Minessale in commit 4bdca81 to resolve this issue. All versions versions from 1.4.4 through the previous release are vulnerable. We highly recommend updating to the current release version as soon as possible.
https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-7392
Improvements in build system, cross platform support, and packaging:
The following bugs were squashed:
- FS-8246 [mod_json_cdr] Use seconds as default value for delay parameter
- FS-8282 [core] Fix for sleep is not allowing interruption by uuid_transfer
- FS-8166 [core] Mute/unmute while shout is playing audio fails because the channel “has a media bug, hard mute not allowed”
- FS-8338 [core] Fix for ringback not working correctly on stereo channels and an issue when setting the ringback variable with an outbound call via the bridge app, if the inbound leg is stereo the ringback tone is still rendered as mono causing the resulting ringback to be higher pitched and incorrect.
- FS-8215 Fixed the accuracy of MacOSX nanosleep
- FS-7673 [mod_v8] ODBC NULL value incorrectly evaluated
- FS-8190 [mod_event_socket] When using nixevent, freeswitch stops sending us certain custom event that were NOT part of the nixevent command
- stereo the ringback tone is still rendered as mono causing the resulting ringback to be higher pitched and incorrect.
- FS-8354 [mod_conference] Reverted a back ported patch for rate change detection because it introduced a regression that caused an audio issue
- FS-8335 [mod_easyroute] Fixed a small error check that results in error message not being displayed
- FS-8370 [mod_rayo] Fixed another place in where a message was freed after being queued for delivery. This resulted in a freed object being serialized, crashing FS
- FS-8378 [mod_esf] [core] Fixed a crash when using esf_page over loopback when transcoding and added tests for esf over loopback. Also refactor a bit to clarify code and get better debug in gdb
- FS-8308 [mod_format_cdr] Fix to double encode if urlencoding json that is already encoded
- FS-8413 [mod_lua] Fixed a segfault calling session:getVariable(nil) in lua script.
FreeSWITCH Week in Review (Master Branch) November 8th – November 14th
This week the FreeSWITCH team added a built in bandwidth test to the verto communicator and a calculated RTT value to help with detecting congested network links. This week we have David Taht joining us on the ClueCon weekly call to talk about FCC firmware policies. Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.
New features that were added:
- FS-8293 [verto_communicator] Added built in speed test feature which gives feedback of available bandwidth and customizes call settings based on bandwidth available
- FS-8534 [rtcp] Added calculated RTT average (RTCP SR) value to help with detecting congested network links
- FS-8416 [mod_xml_radius] Added the ability to format the variable in the param field
Improvements in build system, cross platform support, and packaging:
- FS-8427 [build][mod_av] Fixed an incompatible type for %ld in prinrtf compiler error
- FS-8426 [Debian] Put freeswitch.pm into /usr/share/perl5 so it can be found on both Wheezy and Jessie
- ESL-111 [python] Fixed esl/python/Makefile to create install directory
- FS-8248 [mod_event_socket] Moved python binaries into site arch path to match standards
The following bugs were squashed:
- OPENZAP-240 [mod_freetdm] Fixed a failure to parse caused by using incorrect length when parsing AT responses
- OPENZAP-238 [mod_freetdm] Several core and gsm improvements including fixing signaling status reporting, a small memory leak, fixing caller id and dnis on inbound calls, span stop functionality, and compilation errors in gcc
- FS-8425 [core] Fix for DTMF sometimes missed on PSTN call
- FS-8536 [mod_sofia] Update to send Keyframe when getting SIP INFO with picture_fast_update
- FS-8384 [mod_conference] Fixed a locking contention
The FreeSWITCH 1.4 branch had a bug fix added this week.
The following bugs were squashed:
- FS-8413 [mod_lua] Fixed a segfault calling session:getVariable(nil) in lua script.
FreeSWITCH Week in Review (Master Branch) October 31st- November 7th
This week the FreeSWITCH team added support for early media with a 180 to mod_sofia and continued the expansion of mod_hiredis limit functionality. This week we have Justin Grow from Flowroute joining us on the ClueCon weekly call. He will be talking about Flowroute APIs and configuring FreeSWITCH to work with Flowroute.
Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.
New features that were added:
- FS-8377 [mod_hiredis] Fixed the handling of hiredis limit release when using an interval. The expectation for interval is to NOT decrement the limit.
- FS-8415 [mod_sofia] Added support for early media with 180 using early_use_180=true
The following bugs were squashed:
- FS-8411 [core] Replace ping_frame with video_ping_frame in a couple places that were missed causing issues like being unable to record just one side of a video call
- FS-8413 [mod_lua] Fixed a segfault calling session:getVariable(nil) in lua script.
- FS-8308 [mod_format_cdr] Fix to double encode if urlencoding json that is already encoded
- FS-8414 [core] Fixed ptime not updating on codec renegotiation causing audio issues between two legs of a call
- FS-8417 [core] Fixed SIP offering a=sendonly sometimes replying with a=inactive
- FS-8404 [core] Media engine will default to PCMU/PCMA if you don’t specify any codecs
The FreeSWITCH 1.4 branch had a bug fix added this week.
The following bugs were squashed:
- FS-8308 [mod_format_cdr] Fix to double encode if urlencoding json that is already encoded
FreeSWITCH Week in Review (Master Branch) October 24th-October 31st
FreeSWITCH got some neat improvements this week with work going into improving the handling of vw and vh core file parameters in mod_av to avoid video cropping and crashing, the addition of a new configuration setting in mod_opus to show the decoder stats at the end of the call, and exposing SRTP and SRTCP crypto keys as channel variables to help with debugging.
Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.
New features that were added:
- FS-8281 [core] Expose SRTP and SRTCP crypto keys as channel variables to aid with debugging
- FS-8313 [mod_opus] Introduced new configuration setting ‘decoder-stats’ to show decoder stats at end of call (how many times it did PLC or FEC)
- FS-8380 [mod_av] Improve the handling of vw and vh core file parameters to avoid video cropping and crashing
Improvements in build system, cross platform support, and packaging:
- FS-8389 [build] Fixed msvc 2015 build warnings
- FS-8398 [Ubuntu] Added event_handlers/mod_amqp to avoided modules for Ubuntu 14.04 Trusty
The following bugs were squashed:
- FS-8222 [verto_communicator] Updated getScreenId.js in order to detect plugin issues and attached an ‘ended’ event to screenshare stream in order to detect ‘stop sharing’ click
- FS-8392 [mod_av] Fixed rtpmap to allow both H263 and H263+ codecs to be offered
- FS-8373 [mod_av] Fix for bad recording quality when using fast encoding
- FS-8397 [core] Fixed a race condition incrementing the event-sequence number
- FS-8154 [core] Fixed a segmentation fault occurring while eavesdropping on video call
- FS-8391 [core] Fixed a SDP parsing error for rtcp-fb
- FS-8319 [mod_opus] Fixed and cleaned up switch_opus_has_fec() and switch_opus_info() to avoid FALSE positives for packets with FEC at high frame sizes.
- FS-8344 [mod_opus] Toggle FEC ON only on the last frame which is to be packed
The FreeSWITCH 1.4 branch had a few bug fixes added this week.
The following bugs were squashed:
- FS-8338 [core] Fixed an issue when setting the ringback variable with an outbound call via the bridge app, if the inbound leg is stereo the ringback tone is still rendered as mono causing the resulting ringback to be higher pitched and incorrect.
- FS-8378 [mod_esf] [core] Fixed a crash when using esf_page over loopback when transcoding and added tests for esf over loopback. Also refactor a bit to clarify code and get better debug in gdb
- FS-8370 [mod_rayo] Fixed another place in where a message was freed after being queued for delivery. This resulted in a freed object being serialized, crashing FS
ClueCon Weekly – October 28, 2015 – Brian West
Links:
http://tldp.org/HOWTO/Traffic-Control-HOWTO/intro.html
FreeSWITCH Week in Review (Master Branch) October 17th-October 24th
The FreeSWITCH team added some neat new features this week including: expanded support for limit_* functionality in mod_hiredis and the addition of the field conferenceMemberID to the event broadcasted to inform a verto client about joining a conference.
Join us Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.
New features that were added:
- FS-8375 [mod_conference] Add the field conferenceMemberID to the event broadcasted to inform a verto client about joining a conference.
- FS-8377 [mod_hiredis] Adding expanded support for limit_* functionality
Improvements in build system, cross platform support, and packaging:
- FS-8298 [mod_gsmopen] Fixed a build error
- FS-8362 [Debian] Now if you install with freeswitch-all you will get the default fonts too
The following bugs were squashed:
- FS-8363 [configuration] Don’t register gateways from directory because it registers over what appears to be ipv6 but doesn’t work correctly
- FS-8365 [verto_communicator] Fixed a bug with the chat notifications not going away unless you exited and came back to it
- FS-8336 [verto_communicator] Updating mic and video overlay controls upon receiving member update from live array and use conferenceMemberID when checking if the updated member is the local user
- FS-8307 [mod_conference] Fixed an issue with the order of codecs causing loss of RTP stream
- FS-8280 [mod_conference] Fixed an issue with FS sending redundant stop-recording event notifications
- FS-8130 [mod_conference] Fixed a regression causing excessive mark bit detection in some cases
- FS-8384 [mod_conference] Fixed some locking contention issues between external commands and the video engine
- FS-8338 [core] Fixed an issue when setting the ringback variable with an outbound call via the bridge app, if the inbound leg is stereo the ringback tone is still rendered as mono causing the resulting ringback to be higher pitched and incorrect.
- FS-8366 [core] Fixed a segfault in rxfax
- FS-8275 [core] Fixed an issue with broken RFC2833 DTMF
- FS-8368 [core] Reduce logging for audio/video sync because some call lines were repeating too often for callers in a conference
- FS-8372 [core] Fixed a no media bug caused by sofia sending the wrong response to RTP/SAVPF without DTLS
- FS-8381 [core] Reset jitter buffer if period loss is too high
- FS-8382 [core] Fixed a segfault with inbound-proxy-media enabled
- FS-8378 [mod_esf] [core] Fixed a crash when using esf_page over loopback when transcoding and added tests for esf over loopback. Also refactor a bit to clarify code and get better debug in gdb
- FS-8115 [mod_sofia] Disabled unnecessary session timer re-invites for webrtc
- FS-8370 [mod_rayo] Fixed another place in where a message was freed after being queued for delivery. This resulted in a freed object being serialized, crashing FS
- FS-8287 [mod_opus] Fixed a segfault from refactor
The FreeSWITCH 1.4 branch had a few bug fixes added this week.
The following bugs were squashed:
- FS-8335 [mod_easyroute] Fixed a small error check that results in error message not being displayed
- FS-8370 [mod_rayo] Fixed another place in where a message was freed after being queued for delivery. This resulted in a freed object being serialized, crashing FS
FreeSWITCH Week in Review (Master Branch) October 10th-October 17th
Hello, again. This past week in the FreeSWITCH master branch we had 25 commits. Our feature this week in the verto communicator is the addition of ngSanitize as a dependency, vertoFilters module and picturify filter, and a change to the chat image display behavior (break line before rendering).
Join this Wednesdays at 12:00 CT for some more FreeSWITCH fun with Daniel-Constantin Mierla! And head over to freeswitch.com to learn more about FreeSWITCH support.
New features that were added:
- FS-8030 [verto_communicator] Added ngSanitize as a dependency, vertoFilters module and picturify filter and changed chat image display behavior (break line before rendering).
Improvements in build system, cross platform support, and packaging:
- FS-8194 FS-7910 FS-7937 Various systemd service improvements
- FS-8350 [build] Fix Windows build errors.
- FS-7928 FS-7618 [Debian] Systemd and package build improvements
The following bugs were squashed:
- FS-8328 [mod_conference] Fixed missing ‘else’ keyword
- FS-8306 [mod_amqp] If the exchange doesn’t exist, then create it, else fail. This resolves several error cases. And now command queues can specify the queue to subscribe to. This enables very interesting use cases that would involve single job queue, and multiple consumers.
- FS-8331 [verto_communicator] Do not show reconnect splash when user has clicked logout
- FS-8335 [mod_easyroute] Fixed a small error check that results in error message not being displayed
- FS-6833 FS-6834 [mod_sofia] Found and fixed a few missing content-types in requests/responses with SDP that were outside the norm
- FS-8338 [core] Fix for ringback not working correctly on stereo channels
- FS-7834 [mod_sofia] Fixed MOH not working with inbound-bypass-media and resume-media-on-hold
- FS-8287 [mod_local_stream] Fixed a segfault from refactor
And, this past week in the FreeSWITCH 1.4 branch we had 2 new commits merged in from master. And the FreeSWITCH 1.4.23 release is here! Go check it out!
The following bugs were squashed:
FreeSWITCH Week in Review (Master Branch) October 3rd-October 10th
Hello, again. This past week in the FreeSWITCH master branch we had 51 commits! There were some very important changes this week to the Debian packaging system. The default is now set to build packages with the upstream FS package repos. Since the system dependencies have been removed from the FS codebase the 1.6 branch is now required to use the FS public repo for dependencies. The notable feature for this week is the addition of the variable media_mix_inbound_outbound_codecs, which mixes inbound and outbound codecs, and this is a behavior change.
Join us on Wednesdays at 12:00 CT for some more FreeSWITCH fun! And head over to freeswitch.com to learn more about FreeSWITCH support.
New features that were added:
- FS-8290 [verto_communicator] Automatically mark dedicated encoder if out/in bandwith isn’t set to ‘Server default’
- FS-8290 [verto_communicator] Adding help text on how to enable dedicated remote encoder
- FS-8321 [core] Add variable media_mix_inbound_outbound_codecs to mix inbound and outbound codecs. BEHAVIOR CHANGE
Improvements in build system, cross platform support, and packaging:
- FS-8316 [build][Debian] Fixed new build warning from latest clang and resolved the build warnings in the modules too
- FS-8271 [Debian] Adding some logging, and more cautious handling of spaces in parameters. Now the default will build packages with the upstream FS package repos. This is a change in the default behavior of the Debian packaging system with the justification that in 1.6 it is now required to use the FS public repo for dependencies because system dependencies have been removed from the FS codebase which used to be included. And defaulting to automatically download the binary dependencies because without major changes to package building in cowbuilder(which is the primary supported method of building FS packages), you can’t access the network to build the binary packages from the source package. If using system apt repo list, then include the supplementary ones too
- FS-8233 [automation] In order to clean up build dependencies for the automated tests, convert the tests/*/Makefile.am into an include file for the top level Makefile.am. This will greatly simplify dependency tracking, and allow tests to be rerun easily on FS source code changes.
- FS-7820 [automation] Use a more appropriate function for printing diagnostics
The following bugs were squashed:
- FS-8243 [mod_opus] Adding back the missing part removed in 8b088c2 so FEC works in most surroundings
- FS-8295 [mod_opus] FMTP fixes to continue the cleanup of FEC
- FS-8302 [mod_opus] Fix some printing/logging because switch_opus_show_audio_bandwidth() was not returning TRUE/FALSE as expected
- FS-8130 FS-8305 [mod_opus] Fix some warnings and errors caused by dtx and/or jittery webrtc, refactor of last patch, and add suppression of scary harmless message about opus FEC
- FS-8296 [mod_opus] Improve the way Opus is initialized when a call comes in
- FS-8179 [mod_opus] Fixed a regression setting fec_decode breaking output on stereo calls
- FS-8297 [mod_conference] A fix for auto STUN switching IPs quickly and WebRTC video not working
- FS-8130 [mod_conference] Fix for micro cut-offs and unstable voice issues
- FS-8317 [mod_conference] Fix for playing multiple files at once to stack them for immediate playback, sometimes breaking and the floor layer becoming unusable for the rest of the conference.
- FS-8067 [verto_communicator] When no email is present make sure mm is the default avatar in the circle this way the talk indicator works on PSTN and SIP callers.
- FS-8247 [verto_communicator] When websocket disconnects go to splash screen to wait for the reconnect
- FS-8300 [verto_communicator] Fixing reload bug so reloading twice is no longer needed
- FS-8315 [core] Fix for rtp_media_timeout not working
- FS-8304 [core] Fix for choppy audio during calls
- FS-8320 [core] Fixed broken ZRTP not responding to HELLO packet
- FS-8311 [mod_voicemail] Fix for leave-message event not containing verbose data for a forwarded voicemail
- FS-8318 [mod_av] Fix for recording being out of sync when video from chrome has packet loss
- FS-7929 [mod_sofia] Fixed an issue when processing SIP messages while using camp-on
- FS-6833 [mod_sofia] Add content-type header to ack with sdp
And, this past week in the FreeSWITCH 1.4 branch we had 3 new commits merged in from master. And the FreeSWITCH 1.4.23 release is here! Go check it out!
The following bugs were squashed:
- FS-8246 [mod_json_cdr] Use seconds as default value for delay parameter
- FS-8282 [core] Fix for sleep is not allowing interruption by uuid_transfer
- FS-8166 [core] Mute/unmute while shout is playing audio fails because the channel “has a media bug, hard mute not allowed”