FreeSWITCH v1.10.7 Release
This is a major release with more than 300 changes containing fixes for 5 security advisories adding support for Debian 11, mod_python3 and a lot of bugfixes. Debian 8 support has been dropped. Freetdm has been moved out of tree.
Release Notes - FreeSWITCH - Version 1.10.7
Enhancement
- STIR/SHAKEN
- [Build-System, Packaging] Bump sofia-sip library requirement to version 1.13.6
- [Build-System] Add --enable-heap-profiler and --enable-cpu-profiler configure flags.
- [Build-System] Add Bullseye to the Debian packaging
- [Build-System] Enable applications/mod_test build by default.
- [Build-System] Fix switch_packetizer headers and add it to the build.
- [Build-System] Remove freetdm from the FreeSWITCH tree. Use out-of-tree module https://github.com/freeswitch/freetdm instead.
- [Build-System] Rename package format-mod-opusfile to format-opusfile on CentOS
- [Build-System] Sign FreeSWITCH MSI Package with the Code Signing Certificate on Windows.
- [Build-System] Sign FreeSWITCH modules with timestamp on Windows when new version is released.
- [Build-System] Update libsrtp to 2.4.0
- [Build-System] Use a fresher gcc on RHEL based dists
- [Build-System] Windows: Update OpenSSL to 1.1.1l, libpq to 10.18, curl to 7.78.0, libks to 1.7.0, signalwire-c to 1.3.0, rabbitmq-c to 0.11.0
- [Core, mod_commands] Add posix_spawn replacement for the system call. Add unit-tests.
- [Core, mod_commands] Implement memory allocation statistics by adding the "memory" API command.
- [Core, mod_hash] Add two APIs switch_core_hash_insert_alloc_destructor and switch_core_hash_insert_dup_destructor. Code cleanup in mod_hash. Add unit-tests.
- [Core] Add SEND_RTCP_MESSAGE event and a unit-test.
- [Core] Add check for recovery_skip_announcement_type_applications channel variable, change default behavior to not skip announcement type apps on recovery.
- [Core] Add exclude-error-log-from-xml-cdr config parameter and exclude_error_log_from_xml_cdr global variable.
- [Core] Add new switch_core_hash_insert_dup_auto_free() API
- [Core] Add new switch_core_hash_insert_pointer(switch_hash_t *hash, const void *data) API to be able to insert data into a hash with an auto-generated key based on the data pointer. Cleanup switch_loadable_module_process() to not generate hash keys for stored events itself. Add unit-test.
- [Core] Add partial Asr support
- [Core] Add switch_digest(), switch_digest_string() APIs. Add unit-tests.
- [Core] Add switch_safe_atol() and switch_safe_atoll() functions. Add a unit-test.
- [Core] Add systemd sd_notify support
- [Core] Added state to determine if speech, suppress digit timer if state true
- [Core] Implement NDLB_line_flash_16 channel variable. Set to true to enable deprecated 0-16 back (rfc4733)
- [Core] Prevent write after free into heap when calling switch_core_destroy_memory_pool()
- [FreeSwitchConsole] Fix build with Visual Studio 2022
- [Packaging] Require specific libsofia-sip-ua0 version when installing FreeSWITCH binary packages.
- [Testing] Enable scan-build-7 on Drone CI
- [Testing] Move Drone artifacts to signalwire.cloud
- [Unit-tests] Add --enable-fake-dlclose configure flag so modules are not unloaded and ASAN could give more info and not just .
- [Unit-tests] Add a unit-test for the compact form and full form of the Identity header.
- [Unit-tests] Build sofia-sip on the fly on Drone CI so backtraces are more informative in ASAN reports.
- [Unit-tests] Report test failure details as they happen. Fix issue where fst_xcheck definition did not allow its use inside conditional statements.
- [build] improve configure test for openal
- [core, mod_av] move switch_packetizer to core
- [core, mod_commands, mod_verto] small tweaks to cache stuff to allow clear from verto and allow no domain to imply the default domain
- [core, mod_commands] Execute command under shell when using spawn in switch_system().
- [core, mod_console, mod_graylog2] Add sequence to logs to preserve order when timestamp is not precise enough.
- [core, mod_verto] add visibility filter to verto
- [core, mod_verto] check for camera change and trigger new constraints
- [core, mod_verto] double udp buffer for audio, add verto command for video refresh
- [core, mod_verto] remove CF_VIDEO_ONLY and pay attention to the streams instead and add CF_NO_RECOVER flag for verto
- [core] Add SMBF_PAUSE media bug flag to pause an individual media bug.
- [core] Add app_disable_expand_variables channel variable. When true, application args are not expanded by FreeSWITCH and are passed to the application unchanged.
- [core] Add switch_core_session_set_external_id() which lets you define an additional identifier that you can use in switch_core_session_locate().
- [core] Add switch_ivr_record_file_event() and handle execute_on_record_start/execute_on_record_stop
- [core] Add switch_log_meta_printf() and switch_log_meta_vprintf() to allow JSON metadata to tag along with the log message.
- [core] Add type checking for SWITCH_CHANNEL_SESSION_LOG and SWITCH_CHANNEL_UUID_LOG macros.
- [core] Do not log ERROR in switch_ivr_record_session() if media bug failed due to hangup
- [core] Improve session recording thread performance.
- [core] Remove 255 byte limit to core ASR param stored in module name
- [core] Save position of XML opening tag '>' and XML closing tag '<' in switch_xml_parse_str().
- [core] Update switch_ivr_record_session_event() to check event vars for RECORD_STEREO, etc
- [core] add SCSC_SHUTDOWN_CAUSE
- [core] add a flag to tell when video media bugs that touch the write stream are active
- [core] add core media getter (it gets the RTP session, handy for unit-testing).
- [core] add idle cpu to log lines
- [core] add jpg data_url support with stb_image
- [core] add new function to theorize the dimensions of an image if it were to be resized to fit inside another image
- [core] add new prompt functionality to ask for pin over dialogbox
- [core] add peer uuid to originate log
- [core] add stb_image to read more supported picture formats
- [core] add stb_image_write supported image write
- [core] add support for resolving (and ignoring) mdns style .local addresses in ice candidates
- [core] add switch_filecmp
- [core] add switch_img_read_png_from_memory
- [core] add switch_thread_pool_wait
- [core] add unlockable youtube resolver in the core. use global variable ${youtube_resolver} to set a cgi that takes url= param to translate youtube urls into real stream urls
- [core] allow external ID to be same as the session UUID
- [core] and core video alpha patch test code
- [core] change estimator CUSUM design params for loss to reduce oscillations. rename var.
- [core] don't decode strings with no encoding in them
- [core] don't double set caller-id
- [core] don't hangup call on SRTP errors (new default behaviour)
- [core] expand vars on execute_on and api_on
- [core] fix leak in unit test
- [core] fix long sql stmts may be skipped, introduced in 2e88c67 in 2009
- [core] fix memeory leak when font not found
- [core] fix patch alpha on alpna image
- [core] fix possible looping recover
- [core] fix stbi scan-build warning
- [core] flush all the rtp on transfers
- [core] gen keyframe on new recording
- [core] make auto mean cpu * 3 / 2
- [core] print SRTP lib version at init.
- [core] reduce waits in sqldb
- [core] some mods for file playback to get proper bitrate and timing
- [core] some more hardening work
- [core] update stb image lib to latest master
- [core] url decode video render text
- [core] use the more efficient mult-byte tolower/toupper in the helper func
- [core] speed up call setup
- [mod_amqp] Increase max command size
- [mod_av] Don't require .ext for streaming rtmp:// and rtsp:// formats
- [mod_av] don't exit on decode errs just continue
- [mod_av] dont leak avformat context in error cases
- [mod_av] fix interrupt callback is not passed down to the hls context in the first open_input
- [mod_av] fix leak (#211)
- [mod_av] fix value never read
- [mod_av] make key_frame_min_freq work to prevent generate key frames too frequently
- [mod_av] play video without decode
- [mod_av] print I-frame
- [mod_av] support rtmps
- [mod_conference] Add conference::maintenance conference-heartbeat.
- [mod_conference] Members are searchable by var in more APIs
- [mod_conference] Skip dtmf dist to members with skip-dtmf
- [mod_conference] json: MFLAG_DIST_DTMF
- [mod_conference] make conference breakable
- [mod_curl] Added PATCH method, add insecure and secure options to verify SSL certs, add proxy option.
- [mod_curl] look for cacert in certs dir
- [mod_cv] Replace deprecated definitions and update configure.ac to check renamed opencv4.pc on Debian Bullseye.
- [mod_dptools] add debug_media app
- [mod_event_multicast] Add unicast and IPv6 support, enhanced reloadxml support.
- [mod_event_multicast] Normalize whitespace/tabs
- [mod_fifo] adding 'noans' and 'early' call status options and dtmf '0' disable config settings option
- [mod_fsv] add no_video_decode to support read video rtp packets without decode
- [mod_fsv] add video read support to fsv file format
- [mod_fsv] fix channels regression from 94eb8ac
- [mod_fsv] fix leak in read failure scenario
- [mod_httapi, mod_http_cache] pass through seek values tracked in handle on proxy file handles
- [mod_imagick] [mod_png] small tweaks for pdf
- [mod_imagick] improve log line
- [mod_loopback] Add video support to null endpoint
- [mod_openh264, mod_av] add avcodec and openh264 debug
- [mod_opusfile] add ogg/opus streams, fix Makefile for encoding.
- [mod_python3, ESL py3mod] Add Python3 support.
- [mod_signalwire] add configurable stun port
- [mod_signalwire] add token-reset subcommand to the signalwire api.
- [mod_sofia] Add RFC8760 sha (256, 512) UAS
- [mod_sofia] Add TLS v1.3 support.
- [mod_sofia] Add a unit-test checking that sofia-sip does not leak when a profile fails to start.
- [mod_sofia] Add basic INVITE test
- [mod_sofia] Add tls-orq-connect-timeout profile parameter so SIP engine could try again sending an outgoing request and when possible - using an alternative address (DNS failover). Add sip_call_tls_orq_connect_timeout channel variable per call to override profile's timeout.
- [mod_sofia] Adding custom header to refer
- [mod_sofia] Deprecate the auth-messages profile param by setting it to be enabled by default and introducing the new disable-auth-messages param with a higher priority when set.
- [mod_sofia] Deprecate the auth-subscriptions profile param by setting it to be enabled by default and introducing the new disable-auth-subscriptions param with a higher priority when set.
- [mod_sofia] Destroy nua handles to avoid memory pool swell when system is unavailable (busy, paused or reached internal limits)
- [mod_sofia] Implement maximum receiving requests per second max-recv-requests-per-second profile parameter. (Warning: Behaviour change. New default is 1000 requests per second)
- [mod_sofia] Include isup-oli parameter on outbound invite when we have value in caller profile
- [mod_sofia] Set sip_100_uepoch channel variable on initial 100 trying response.
- [mod_sofia] add contact header in REFER
- [mod_sofia] add sip_ignore_remote_cid var to ignore remote display update
- [mod_sofia] add sip_refer_continue_after_reply channel variable.
- [mod_sofia] don't auto unhold via media format for non-sip
- [mod_sofia] rfc8760: reorder hash algorithms by priority (strength), no matter the order provided in the cfg
- [mod_sofia] use different nonce per auth algorithm
- [mod_spandsp] Add verbose-log-level configuration.
- [mod_spandsp] Use single log for fax negotiation and page reports.
- [mod_spandsp] add fax_trace_dir channel variable. When set, it will write spandsp fax trace to one file per fax.
- [mod_spandsp] set fax_trace_file channel var if a trace file is opened
- [mod_ssml] Add channel-uuid parameter to the tts:// file format and forward it to the core speech handle as a parameter.
- [mod_valet_parking] Add valet_parking_orbit_exit_key option
- [mod_verto] add a way to broadcast an event to one session
- [mod_verto] add chop-domain undocumented feature to allow FS to ignore @ in username
- [mod_verto] add debug controls for verto
- [mod_verto] add exptime to ping and pong and log any hangups as a result of auth expiring
- [mod_verto] add jsonlist
- [mod_verto] add log line to detect incorrect login
- [mod_verto] add new verto command construct basics
- [mod_verto] add param to have verto send pass over xml_curl
- [mod_verto] add reattach flag on reconnect to trigger mcu key frame
- [mod_verto] add some data about the identity of the requestor to json_api requests
- [mod_verto] add some more log lines
- [mod_verto] add subscribed channel in events so you can see what subscription string you used
- [mod_verto] add verto perms commands
- [mod_verto] add verto.ping
- [mod_verto] add verto_skip_set_user var to skip set_user in mod_verto
- [mod_verto] allow re-auth via verto.login
- [mod_verto] allow vars from dp to pass to verto dialog
- [mod_verto] auth-expires
- [mod_verto] check permissions on the more specific event channel for guest users to allow them to subscribe to global events but still get send/don't send permission control on specific conferences
- [mod_verto] fix reattach on reopen
- [mod_verto] gen keyframe both ways on re-invite
- [mod_verto] get the conference to send a keyframe when you reload/attach so the video shows up faster
- [mod_verto] indicate video fps and size of current layer to client
- [mod_verto] make verto.attach always an answer and never an offer
- [mod_verto] more perms checks
- [mod_verto] move websocket implementation to libks
- [mod_verto] new changes for verto video features
- [mod_verto] pass in audio flags
- [mod_verto] print json debug compact
- [mod_verto] put vars frorm user lookup into user_vars and protect user_vars
- [mod_verto] regression from fix for guest seeing non-public rooms
- [mod_verto] send last known display info on re-attach
- [mod_verto] smaller jb
- [mod_verto] verto auth stuff
- [mod_verto] verto re-invites part 1
- [mod_verto] verto.announce
- [mod_video_filter] fix some keyframe stuff and add read:sound and write:sound options
- [test] add missing file for test
- [unit-tests] [mod_sndfile] parallelize unit-tests, each audio extension test in its own session.
Bug
- [Build-System] Allow out-of-tree modules to stay commented out in modules.conf and fix false-positive warnings from module integrity checking when running make install.
- [Configuration] Fix Brazil daylight’s in xml files
- [Core, mod_conference] Fixed oscillation in conference AGC processing. Especially during volume reduction processing
- [Core, mod_sofia] switch_core_media: copy telephony event over on 3rd party response, fix duplicates in SDP, add a unit-test.
- [Core] Add new switch_channel_set_variable_strip_quotes API, cleanup mod_sofia.
- [Core] Cleanup sqldb: remove unimplemented io_mutex from switch_cache_db_handle and sql_manager structures
- [Core] Deprecate RFC 2833 Line flash event code 16 according to RFC 4733
- [Core] Do not generate SDP media Descriptions with RTP/SAVP transport protocol when no crypto attribute. Add a unit-test.
- [Core] Don't flip CID on recover if that's done already.
- [Core] Fix FreeSWITCH crashes caused by race conditions when working with Secure RTP.
- [Core] Fix ICE and media delay.
- [Core] Fix MSRP relaying.
- [Core] Fix a false-positive memory leak detected by scan-build in switch_channel_set_variable_strip_quotes_var_check()
- [Core] Fix bridge_early_media
- [Core] Fix crash on removing xml attributes. Add unit test.
- [Core] Fix database handles infinitely locked in switch_cache_db_database_interface_flush_handles()
- [Core] Fix dereference of null pointer in switch_ivr_wait_for_answer()
- [Core] Fix false-positive memory leak in switch_core_set_variable() detected by scan-build
- [Core] Fix portability for logging last_digit_time in switch_ivr_play_say.c
- [Core] Fix possible deadlock of an rtp_session in handle_ice()
- [Core] Fix possible dereference of null pointer in switch_ivr_originate() and switch_ivr_enterprise_originate()
- [Core] Fix possible memory leak in switch_console_complete()
- [Core] Fix wrong lock order in switch_user_sql_thread()
- [Core] Offer all negotiated codecs in 200 OK when receiving re-INVITE without SDP
- [Core] scan-build: Argument with 'nonnull' attribute passed null in switch_html_strip()
- [Core] scan-build: Argument with 'nonnull' attribute passed null in switch_loadable_module_load_module_ex()
- [Core] scan-build: Argument with 'nonnull' attribute passed null in switch_xml_internal_dtd()
- [Core] scan-build: Fix false-positive use-after-free in switch_xml_free_attr(). Add unit test.
- [Core] scan-build: Use of zero allocated in switch_xml_str2utf8()
- [Core] scan-build: fix false-positive memory leak in switch_xml_set_attr_d and switch_xml_set_attr_d_buf
- [Core] scan-build: fix false-positive use-after-free in switch_xml_internal_dtd()
- [Core] scan-build: memory leak in switch_xml_user_cache()
- [Core] sqldb: Fix wrong lock order in switch_cache_db_release_db_handle()
- [Core] switch_ivr: Restrict the misuse of uuid_hold API. Add switch_hold unit-test.
- [Core] switch_rtp: fix switch_rtp_set_max_missed_packets logging
- [Packaging] Fix a conflict between freeswitch-mod-python and freeswitch-mod-python3 Debian packages
- [Unit-Tests] Fix switch_core_video test to use temporary path for generated files and clean them up. Ignore test runtime dirs.
- [Unit-test] Use unique port numbers when running mod_sofia tests.
- [Unit-tests] Fix mac build
- [Unit-tests] Fix-up usage of sipp in the register_403 unit-test of mod_sofia
- [apr] error: use of undeclared identifier 'NSIG'
- [apr] scan-build: Dereference of null pointer in apr_hash_merge()
- [build] remove generated libs/srtp/config_in.h file and add some git ignores
- [core] Fix read of uninitialized buffer in switch_simple_email().
- [core] Fix regression in play_and_collect_input
- [core] MSRP: fix memleak (ssl)
- [core] RTP: handle flush for incoming stream with DTX or packet loss.
- [core] RTP: remove redundant condition when checking payload type of incoming packets.
- [core] don't hangup call on srtp errors (new default behavior)
- [core] fix log format string (ASAN Warning)
- [core] scan-build: Dereference of null pointer (loaded from variable 'flags')
- [daylight saving]- Fixs wrong daylight saving
- [freeswitch] Argument with 'nonnull' attribute passed null in reincarnate_protect()
- [iksemel] Fix memory leak
- [libdingaling] Fix memory leaks
- [libsrtp] Fix build on MAC OS
- [libvpx] configure: macos release independence for sse
- [libvpx] scan-build: Assigned value is garbage or undefined
- [libvpx] scan-build: fix false-positive dereference of null pointer
- [libyuv] Disable scan-build warnings.
- [mod_amrwb] add cfg setting mode-set-overwrite (it will answer with just one mode-set value) - fixes audio quality issues in mod_conference with some UEs.
- [mod_av] fix some leaks in error cases
- [mod_commands] Fix leak of a timer object in timer_test
- [mod_commands] OpenBSD compat
- [mod_conference] fix crash when using conference heartbeat
- [mod_conference] scan-build: Value stored to 'status' is never read - conference_loop_input()
- [mod_dialplan_xml] Fix possible use after free in parse_exten()
- [mod_dptools] Fix silence_ms misspelling typo in vad_test command
- [mod_dptools]: wait_for_silence does not allow the listen_hits parameter to be a value of 0
- [mod_httapi] Avoid using CURLOPT_WRITEFUNCTION for headers
- [mod_http_cache] Fix the query string not included for HTTP PUT requests to s3
- [mod_http_cache] fix race cond at shutdown
- [mod_kazoo] Fix issues reported by scan-build 7
- [mod_lua] scan-build: Called C++ object pointer is null (Dbh_test_reactive)
- [mod_managed] Fix Windows build
- [mod_opus] add cfg setting to overwrite the fmtp stereo param coming from remote. Eg: incoming SDP has stereo=1 but we want a mono call so we answer with stereo=0.
- [mod_opusfile] Improvements.
- [mod_opusfile] add ogg/opus streams, fix Makefile for encoding.
- [mod_opusfile] protect ogg data buff
- [mod_opusfile] unit-tests: add timer to fix random failures due to the fact that the decoding callback is not installed immediatelly
- [mod_opusfile] unit-tests: add timer to fix random test failures due to the fact that the decoding callback is not installed immediately
- [mod_python3] Fix switch module definition preventing mod_python3 from loading.
- [mod_python3] Remove deprecated calls.
- [mod_python3] Replace previously removed deprecated calls
- [mod_python] scan-build: Assigned value is garbage or undefined
- [mod_python] scan-build: Called C++ object pointer is null
- [mod_rayo] mod_rayo returns error exec_conference_api
- [mod_say_pl] Fix potential memory leak in pl_say_ip()
- [mod_signalwire] When SignalWire SIP Gateway is in unregistered state it's DOWN and can not be NOREG.
- [mod_skinny, mod_cdr_mongodb, mod_rayo] Fix Debian 11 build warnings.
- [mod_sndfile] fix test build on osx
- [mod_sofia] Calling direct _unref() functions in sofia_event_callback() is unsafe.
- [mod_sofia] Cleanup sofia_glue_get_host() and make the pool arg be required.
- [mod_sofia] Destroy nua handles to avoid memory pool swell when system is unavailable (busy, paused or reached internal limits)
- [mod_sofia] Destroy session after relaying notify result on proxy refer.
- [mod_sofia] Fix build on older sofia-sip when NUTAG_CALL_TLS_ORQ_CONNECT_TIMEOUT tag is undefined.
- [mod_sofia] Fix multiple issues in sofia_presence.c found by scan-build.
- [mod_sofia] Fix possible nua handle leak in sofia_handle_sip_i_refer()
- [mod_sofia] Fix use of NUTAG_CALL_TLS_ORQ_CONNECT_TIMEOUT when sip_call_tls_orq_connect_timeout channel variable is undefined.
- [mod_sofia] Fixed a few Usage-of-uninitialized value bugs which may cause information discolsure and bypass ACL check
- [mod_sofia] Map 607 to CAUSE_UNWANTED and add 608 to CALL_REJECTED
- [mod_sofia] Remove redundant sip_from->a_url checks
- [mod_sofia] add 'sip_destination_prefix' var to prefix user portion of request uri with a value (note this will not affect calls to registered endpoints)
- [mod_sofia] fix md5 digest infoleak
- [mod_sofia] fix memleak (presence)
- [mod_sofia] fix memleak on gw registration timeout.
- [mod_sofia] fix memleak with invalid hostname as gw/proxy
- [mod_sofia] more fixes around md5 hash infoleak (tricky cfg).
- [mod_sofia] release nat mapping when nua create failed
- [mod_sofia] scan-build: Argument with 'nonnull' attribute passed null
- [mod_sofia] scan-build: Dereference of null pointer in sofia_handle_sip_i_bye(), sofia_handle_sip_i_invite() and our_sofia_event_callback()
- [mod_sofia] scan-build: Fix dereference of null pointer in sofia_outgoing_channel().
- [mod_sofia] sofia_process_dispatch_event() should unref all handles via sofia stack
- [mod_sofia] unit-tests fix - don't run shaken tests if lib not installed
- [mod_spandsp] Fix t.38 fax initialization not to add it to the timer thread until after configuration has completed.
- [mod_spandsp] Protect spandsp data from t38 timer thread and call session thread simultaneous access.
- [mod_spandsp] scan-build: Argument with 'nonnull' attribute passed null in modem_init()
- [mod_spandsp] scan-build: Argument with 'nonnull' attribute passed null in udptl_rx_packet()
- [mod_ssml] replace strncpy() with snprintf() to fix errors reported by newer compilers.
- [mod_tts_commandline] check return of switch_system() against 127 too
- [mod_v8] Fix false-positive memory leak detected in process_status_function() by scan-build
- [mod_valet_parking] Do not crash when exit key is not defined
- [mod_valet_parking] Fix typo in valet_parking_orbit_dialplan channel variable.
- [mod_verto] Add hack.diff to mcast's swig
- [mod_verto] Fix content length overflow on 32bit
- [mod_verto] Fix leak in http_run
- [mod_verto] Fix memory leak and a deadlock on verto endpoint interface in verto_outgoing_channel()
- [mod_verto] Fix use of libks websockets on Windows. POLLHUP is ignored in poll events on Linux but fails on Windows so should be avoided.
- [mod_verto] Handle short read from websocket. This fixes an interop problem with iOS 15.
- [mod_verto] clientReady - reattached_sessions array
- [mod_verto] scan-build: fix false-positive Argument with 'nonnull' attribute passed null in check_auth
- [mod_xml_ldap] Move all memory allocations into the mod's pool so it does not leak on shutdown. Fix leaking xml_ldap_search().
- [unit-tests] [mod_sndfile] fix build for Debian Jessie
- [unit-tests] [mod_sndfile] increase SPS limit
- [unit-tests] fix SPS-related race in the sndfile test.
Installation guides
https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+1.10.x+Release+notes