Skip to content

FreeSWITCH v1.10.3 Release

Compare
Choose a tag to compare
@andywolk andywolk released this 11 May 13:46
· 1255 commits to master since this release

This is a major bugfix release. As part of our continuing dedication to code quality we have resolved static analysis bugs in all of FreeSWITCH core and in most modules. And not just that. We got huge improvements in change inspections by focusing on the testing framework - our code quality tooling that already helping us fixing leaks, codecs, database logic issues, behavior instabilities and making dependency updates easier. Almost three hundred changes covering the entire codebase contain fixes for memory errors, potential crashes and misbehaviours.


 Release Notes - FreeSWITCH - Version 1.10.3

Enhancement

  • [Build-System] Add print_tests make target to output the list of tests being built including in modules
  • [Build-System] Enable mod_ilbc Debian packaging.
  • [Build-System] Update debian/control and replace all instances of Priority: extra with Priority: optional. Since Debian Policy version 4.0.1, the priority extra has been deprecated.
  • [build/test] git ignore test output
  • [cJSON] Update to v1.7.12
  • [Configuration] sip_profiles: Use $${external_sip_ip} for ext-sip-ip, $${external_rtp_ip} for ext-rtp-ip
  • [Core, mod_loopback] Add support to set group confirm on each leg
  • [core] add audio channels limit when opening files, configurable through switch.conf.xml (param "max-audio-channels")
  • [core] Add global/leg variable to originate: group_confirm_timeout
  • [core] Reduce log level to DEBUG for binding to events and certain clock messages
  • [core] refactor originate internals (oglobals)
  • [Core] switch_rtp: reduce dtls handshake failure level from error to warning.
  • [Core] switch_rtp: reduce end call due to SRTP failure log level from error to warning.
  • [Core] Track who calls memory pool destroy.
  • [core] Transfer with rtp_pass_codecs_on_stream_change one way audio
  • [core] Turn DTMF logging on or off using sensitive_dtmf var
  • [docs/phrase] Translated all phrases (voice prompts) to German.
  • [mod_amr, mod_amrwb] RFC4867 mode-set compliancy
  • [mod_av] Reduce error level to warning for "Could not decode frame".
  • [mod_av] reduce some errors to warnings in logs
  • [mod_avmd] Add test of CPU usage
  • [mod_httapi] Introduction of connect-timeout param
  • [mod_kazoo] add event stream connected time
  • [mod_kazoo] maintenance
  • [mod_kazoo] some fixes & enhancements
  • [mod_loopback] add channel var loopback_no_pre_answer
  • [mod_loopback] Don't block channel too long if already hangup, also add option to hangup immediately with cause
  • [mod_shout] Reduce log level from error to warning for "Error opening %s (invalid rate or channel count)"
  • [mod_sndfile] Reduce error level to warning for "Error Opening File"
  • [mod_sofia] Add abort-on-empty-external-ip global param disabled by default.
  • [mod_sofia] Add new gateway param 'contact-in-ping' to support Microsoft Teams Direct Routing
  • [mod_sofia] Quiet down error when registration credentials are missing
  • [mod_verto] Fix Makefile.am and reswig, fix scan-build warnings in swig and enable scan-build on Drone
  • [mod_verto] Setting transfer_disposition to recv_replace on aleg
  • [sofia-sip] Build internal tests
  • [Testing] Add clang static analyzer to Drone CI
  • [Testing] Add mod_portaudio, mod_redis, mod_skinny to scan-build on Drone
  • [Unit-test] Run tests in parallel
  • [Unit-test] Separate to a node on Drone CI
  • [unit-tests] add RTP test with session
  • [Unit-tests] Collect crash data when a unit-test core-dumps
  • [Unit-tests] Do not initiate sqldb by default unless requested.
  • [Unit-tests] Enable address sanitizer when running tests.
  • [Unit-tests] Implement module tests in Drone CI
  • [Unit-tests] Place module tests into their module's Makefile.am, fix tests, add missing Makefile.am to mod_png, implement recursive make check.
  • Add git configuration to ignore errors from git fsck
  • Update libvpx to 1.8.1 and libyuv to ea23edfb

Bug

  • [apr-util] Fix issues reported by scan-build.
  • [apr-util] scan-build: Fix "Assigned value is garbage or undefined" in unknown_toUtf8
  • [apr] Fix dead assignment and use of uninitialized variable in strings.
  • [apr] Fix potential dereference of a null pointer when apr_pool_create_ex() is called without both an allocator and a parent while global_pool is uninitialized.
  • [apr] Fix typo in network_io/unix/sendrecv.c made by previous commit
  • [apr] scan-build: Fix "Argument with 'nonnull' attribute passed null" in file_io/unix/filepath.c
  • [apr] scan-build: Fix dereference of a null pointer and unused variable in network_io/unix
  • [apr] scan-build: fix dereference of null pointer in apr_hash_merge() and apr_proc_other_child_unregister()
  • [apr] Scan-build: Fix multiple dead assignments in sha2.c
  • [apr] scan-build: fix use of unassigned values in file_io/unix
  • [Build-System] Add sndfile.conf.xml to CentOS spec file.
  • [Build-system] Fallback for mariadb lib check
  • [Build-System] Fix regression from the mariadb library checking fix.
  • [core, mod_loopback] Fix group confirm loopback
  • [core,mod_verto,mod_xml_rpc] Fix use of deprecated CRYPTO_set_id_callback().
  • [core] add orig session check
  • [core] avoid overflow when channel muxing
  • [core] Fix copy/paste mistake in switch_xml.h
  • [Core] Fix crash when parsing some uncommon SDP attributes
  • [Core] Fix dereference of null pointer in video_bridge_thread() when codec b is not yet initialized.
  • [Core] Fix leak in switch_xml_set_attr(). Add case to a unit test.
  • [Core] Fix locking and a memory leak in switch_core_session_write_video_frame() and switch_core_session_write_text_frame().
  • [core] fix memory leak on playback, in certain error conditions (eg: native file related)
  • [Core] Fix one way audio after executing the uuid_recv_dtmf with dtmf string ending with w or W.
  • [Core] Fix OSX build in switch_ivr_originate.c
  • [Core] Fix possible leak of the subclass variable in CUSTOM_HASH'es switch_event_reserve_subclass_detailed().
  • [Core] Fix potential leak of hash table keys.
  • [Core] Fix RTP unit-test by adding switch_rtp_get_core_session().
  • [core] fix sdp parsing on invalid sdp
  • [core] Fix switch_vad_process() to properly use result of fvad_process()
  • [Core] Fix various dead assignments.
  • [core] fix: don't terminate file before max_samples returned
  • [Core] Remove dead assignment and dead increment in text_bridge_thread().
  • [core] scan-build: Access to field 'microseconds_per_packet' results in a dereference of a null pointer
  • [core] scan-build: Called function pointer is null (null dereference) - switch_ivr_collect_digits_callback()
  • [core] scan-build: Dereference of null pointer (loaded from variable 'result') - switch_ivr_play_and_detect_speech()
  • [core] scan-build: Dereference of null pointer (loaded from variable 'txt') - switch_img_write_text_img(
  • [Core] scan-build: Fix "Result of operation is garbage or undefined" in switch_color_yuv2rgb()
  • [Core] scan-build: Fix "The result of the '<<' expression is undefined" in switch_log_str2mask().
  • [Core] scan-build: Fix possible dereference of null pointer in switch_loadable_module_sort_codecs()
  • [core] scan-build: Function call argument is an uninitialized value - switch_xml_set_attr()
  • [core] scan-build: Function call argument is an uninitialized value - sig_tone_rx()
  • [core] scan-build: Null pointer passed as an argument to a 'nonnull' parameter - switch_event_base_add_header()
  • [core] scan-build: The result of the '<<' expression is undefined - switch_log_str2mask()
  • [core] scan-build: Value stored to 'EM' is never read - rpe_grid_selection()
  • [core] scan-build: Value stored to 'err' is never read
  • [core] scan-build: Value stored to 'err' is never read - switch_loadable_module_build_dynamic()
  • [core] scan-build: Value stored to 'file' is never read
  • [core] scan-build: Value stored to 'first_timeout' is never read - switch_ivr_collect_digits_count()
  • [core] scan-build: Value stored to 'frame' during its initialization is never read - eavesdrop_callback()
  • [core] scan-build: Value stored to 'ip' is never read - switch_core_media_recover_session()
  • [core] scan-build: Value stored to 'last_speed' is never read - switch_ivr_play_file()
  • [core] scan-build: Value stored to 'lcount' is never read - switch_xml_toxml_r()
  • [core] scan-build: Value stored to 'len' is never read
  • [core] scan-build: Value stored to 'master' is never read - switch_ivr_broadcast()
  • [core] scan-build: Value stored to 'midstate' during its initialization is never read
  • [core] scan-build: Value stored to 'midstate' during its initialization is never read - switch_core_session_hangup_state()
  • [core] scan-build: Value stored to 'myflags' during its initialization is never read - switch_ivr_originate()
  • [core] scan-build: Value stored to 'pass_fmtp' is never read - switch_core_media_gen_local_sdp()
  • [core] scan-build: Value stored to 'pid' is never read - buffer_vp9_packets()
  • [core] scan-build: Value stored to 'ptime' is never read
  • [core] scan-build: Value stored to 'q' during its initialization is never read - msrp_parse_headers()
  • [core] scan-build: Value stored to 'status' is never read
  • [core] scan-build: Value stored to 'status' is never read - audio_bridge_thread()
  • [core] scan-build: Value stored to 'status' is never read - switch_core_session_write_frame()
  • [core] scan-build: Value stored to 'status' is never read - switch_ivr_eavesdrop_session()
  • [core] scan-build: Value stored to 'status' is never read - switch_ivr_menu_execute()
  • [core] scan-build: Value stored to 'status' is never read - switch_ivr_session_echo()
  • [core] scan-build: Value stored to 'theiroffset' is never read
  • [core] scan-build: Value stored to 'time_sync' during its initialization is never read
  • [core] scan-build: Value stored to 'time_sync' is never read - softtimer_runtime()
  • [core] scan-build: Value stored to 'timeout' is never read - switch_ivr_park()
  • [core] scan-build: Value stored to 'timer_name' is never read - switch_core_media_activate_rtp()
  • [core] scan-build: Value stored to 'tz_name' is never read - switch_strftime_tz()
  • [core] scan-build: Value stored to 'xcheck_jitter' is never read
  • [Core] switch_loadable_module wrongly logs that modules.conf loading fails while it's pre_load_modules.conf
  • [Core] switch_rtp: update username to allow size specified in STUN RFC 5389
  • [core] use switch_core_session_get_partner in sched_hangup to hangup …
  • [Core] Wait sql threads to spin up. Fixes module_exists, show_codec commands.
  • [iksemel, libdingaling] scan-build: fix multiple dead assignments and dereference of null pointer
  • [libnatpmp] scan-build: The left operand of '!=' is a garbage value
  • [libvpx] Fix pthread configure checks: "Null pointer passed as an argument to a 'nonnull' parameter"
  • [libvpx] Fix typo in Windows project file.
  • [libvpx] scan-build: Division by zero - measure_square_diff_partial()
  • [libvpx] scan-build: Fix "Assigned value is garbage or undefined" in vpx_post_proc_down_and_across_mb_row_c()
  • [libvpx] scan-build: Fix "Dereference of null pointer" in vp8_peek_si_internal
  • [libvpx] scan-build: Fix "Result of operation is garbage or undefined" in vp9/encoder/vp9_rd.c
  • [miniupnpc] fix heap-buffer-overflow reported by ASAN (on read)
  • [miniupnpc] Value stored to 'fd_flags' is never read
  • [mod_abstraction] scan-build: Fix dead assignment.
  • [mod_amqp] scan-build: Dereference of null pointer (loaded from variable 'active') - mod_amqp_connection_open()
  • [mod_amqp] scan-build: Multiple dereference of null pointer (loaded from variable 'active')
  • [mod_amr] fix memory leak at load time (xml)
  • [mod_amr] scan-build: Array access (from variable 'tocs') results in a null pointer dereference - switch_amr_unpack_oa()
  • [mod_amr] scan-build: fix dead increment of fmtptmp_pos in switch_amr_init()
  • [mod_amr] scan-build: Value stored to 'ft' is never read - switch_amr_unpack_be()
  • [mod_amr], [mod_amrwb]: mark AMR and AMRWB as VBR, don't let mod_native_file load them for playback/recording)
  • [mod_amrwb] fix memory leak at load time (xml)
  • [mod_av] Fix mod_av not having audio when using avresample
  • [mod_callcenter] scan-build: Fix dead initialization.
  • [mod_cidlookup] Fix dereference of null pointer and optimize use of pool's memory avoiding double-allocations.
  • [mod_conference] Fix memory leaks and a possible deadlock in chat_send();
  • [mod_conference] fix overflow (video mode == passthrough)
  • [mod_conference] Fix possible NULL argument.
  • [mod_dingaling] scan-build: fix multiple dead assignments and dereference of null pointer.
  • [mod_dptools] scan-build: Fix "Potential leak of memory pointed to by 'head'"
  • [mod_erlang_event] Fix segfault in destroy_listener()
  • [mod_erlang_event] scan-build: Access to field 'rwlock' results in a dereference of a null pointer (loaded from variable 'listener')
  • [mod_erlang_event] scan-build: Function call argument is an uninitialized value
  • [mod_fifo] scan-build: Function call argument is an uninitialized value, fix dead assignments
  • [mod_fifo] scan-build: Value stored to 'arg' is never read - xml_callback()
  • [mod_hash] Fix use of remote's hash table after free.
  • [mod_hash] scan-build: Fix "Potential leak of memory pointed to by 'item'".
  • [mod_hiredis] Fix dependency for Debian Buster.
  • [mod_httapi] Fix leak of context->url_params
  • [mod_imagick] Remove unused variable.
  • [mod_java] scan-build: Undefined or garbage value returned to caller - run_dtmf_callback()
  • [mod_java] scan-build: Value stored to 'status' is never read - create_java_vm()
  • [mod_json_cdr] scan-build: Fix dead assignments.
  • [mod_kazoo] add checks, fixes & defaults
  • [mod_kazoo] Fix potential memory leaks
  • [mod_kazoo] queue timeout configuration
  • [mod_loopback] fix early_set_loopback_id for b leg
  • [mod_loopback] Split null_auto_answer into two variables null_enable_auto_answer and null_auto_answer_delay. Default auto_answer_delay is 0 instead of 1 ms. Auto answer is enabled by default if null_enable_auto_answer is not set. More carefully compute the delay in ms to not block channel longer than needed.
  • [mod_lua] Fix leaks.
  • [mod_mariadb] Fix autocommit not flipping back to on when a transaction ends in mod_mariadb causing switch_cache_db_test_reactive() to fail.
  • [mod_mariadb] Fix reconnect during db failover/restart
  • [mod_memcache] scan-build: Fix "Uninitialized argument value"
  • [mod_native_file] don't channel mux during native file play (and avoid overflow too).
  • [mod_odbc_cdr] scan-build: Fix dereference of null pointer and a dead assignment.
  • [mod_opusfile] fix play sample rate (don't use original rate, always use 48k), fix EOF, add unit-test.
  • [mod_opusfile] use SWITCH_SIZE_T_FMT when printing debug logs.
  • [mod_oreka] scan-build: Value stored to 'linear_frame' is never read oreka_audio_callback()
  • [mod_pgsql,mod_mariadb] Fix scan-build warnings.
  • [mod_pgsql] Fix autocommit not flipping back to on when a transaction ends in mod_pgsql causing switch_cache_db_test_reactive() to fail.
  • [mod_png] Remove unused variable.
  • [mod_portaudio] CF_AUDIO flag is not set
  • [mod_portaudio] scan-build: Access to field 'next' results in a dereference of a null pointer (loaded from variable 'previous').
  • [mod_portaudio] scan-build: Dead assignments
  • [mod_portaudio_stream] scan-build: Fix dead assignment.
  • [mod_python] scan-build: Fix "Argument with 'nonnull' attribute passed null"
  • [mod_rayo] Fix heap use after free and a possible buffer overflow.
  • [mod_rayo] Fix leak in the mod and in tests.
  • [mod_redis] scan-build: Assigned value is garbage or undefined
  • [mod_redis] scan-build: Dereference of null pointer - cr_delete()
  • [mod_redis] scan-build: Potential leak of memory pointed to by 'cptr' - cr_morebulk()
  • [mod_rss] scan-build: Fix dead assignments.
  • [mod_rtmp] scan-build: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'profile') - config_profile()
  • [mod_rtmp] scan-build: Value stored to 'codec' is never read - rtmp_audio_codec()
  • [mod_rtmp] scan-build: Value stored to 'status' is never read - RTMP_INVOKE_FUNCTION(rtmp_i_sendevent)
  • [mod_say_xx] Fix multiple dead assignments
  • [mod_shout] Fix Windows build by placing libogg sources to files.freeswitch.org
  • [mod_silk] Fix mod_silk always init with maxaveragebitrate=20000
  • [mod_skinny] scan-build: Assigned value is garbage or undefined
  • [mod_skinny] scan-build: Dead assignments
  • [mod_skinny] scan-build: Value stored to 'profile' is never read - channel_outgoing_channel()
  • [mod_sndfile] Fix .raw audio file playing and other raw audio file extensions. Fix stereo2mono for certain formats.
  • [mod_sofia] Fix potential buffer overrun when rewrite_multicasted_fs_path is enabled.
  • [mod_sofia] Fix rtp config ipv4/ipv6 index confusion
  • [mod_sofia] remove blank display name that can show up in from uri
  • [mod_sofia] scan-build: Access to field 'sip_call_info' results in a dereference of a null pointer (loaded from variable 'sip')
  • [mod_sofia] scan-build: Access to field 'sip_payload' results in a dereference of a null pointer (loaded from variable 'sip')
  • [mod_unimrcp] scan-build: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'mod_profile')
  • [mod_unimrcp] scan-build: Value stored to 'lname' is never read - audio_queue_create()
  • [mod_v8] Fix scan-build warnings.
  • [mod_verto] fix crash on vhost http server requests without content type
  • [mod_verto] Fix Makefile.am and reswig
  • [mod_verto] Fix packet o death.
  • [mod_verto] Fix scan-build warnings in swig and enable scan-build on Drone.
  • [mod_verto] scan-build: Null pointer argument in call to string comparison function - http_run()
  • [mod_verto] scan-build: Value stored to 'cur' is never read
  • [mod_verto] scan-build: Value stored to 'status' is never read - verto_read_text_frame()
  • [mod_vlc] Fix segfault.
  • [mod_vlc] scan-build: Access to field 'context' results in a dereference of a null pointer (loaded from variable 'tech_pvt');
  • [mod_vlc] scan-build: multiple dereferences of a null pointer
  • [mod_vlc] scan-build: Value stored to 'vcontext' is never read - av_init_handle()
  • [mod_vlc] scan-build: Value stored to 'vcontext' is never read - vlc_file_av_open()
  • [mod_voicemail_ivr] scan-build: Null pointer passed as an argument to a 'nonnull' parameter - SWITCH_STANDARD_APP(voicemail_ivr_function)
  • [mod_voicemail_ivr] scan-build: Value stored to 'previous_msg' during its initialization is never read - vmivr_menu_navigator()
  • [mod_xml_cdr] scan-build: Fix dead assignments.
  • [sofia-sip] fix build on newer clang
  • [sofia-sip] Fix crash in timer B outgoing_timer_bf() which asserts if INVITE request was completed already.
  • [sofia-sip] fix logging overflow (sofia loglevel tport X)
  • [sofia-sip] Fix multiple issues reported by scan-build.
  • [sofia-sip] Fix Out-of-bound array access warning: String copy function overflows destination buffer in nua_stack_event()
  • [sofia-sip] Fix out-of-bounds write in sres_sofia_update().
  • [sofia-sip] Fix sdp_session_cmp(), add test. Scan-build: Fix multiple dereferences of null pointer.
  • [sofia-sip] Fix use of deprecated CRYPTO_set_id_callback().
  • [sofia-sip] Guard if in sres_record_compare() and fix braces in sres_resolver_receive().
  • [sofia-sip] scan-build: Access to field 'ai_addr' results in a dereference of a null pointer (loaded from variable 'res')
  • [sofia-sip] scan-build: Access to field 'c_address' results in a dereference of a null pointer (loaded from variable 'c'
  • [sofia-sip] scan-build: Access to field 'c_nettype' results in a dereference of a null pointer (loaded from variable 'a')
  • [sofia-sip] scan-build: Access to field 'nh_destroyed' results in a dereference of a null pointer (loaded from variable 'nh')
  • [sofia-sip] scan-build: Access to field 'z_number_of_adjustments' results in a dereference of a null pointer (loaded from variable 'a')
  • [sofia-sip] scan-build: Assigned value is garbage or undefined - outgoing_naptr_tport()
  • [sofia-sip] scan-build: Assigned value is garbage or undefined - outoing_naptr_tport()
  • [sofia-sip] scan-build: Fix "Called function pointer is null (null dereference)" in t_filter() of su_taglist.c
  • [sofia-sip] scan-build: Fix "Dereference of null pointer" in outgoing_answer_srv().
  • [sofia-sip] scan-build: Fix "Result of operation is garbage or undefined" in sres_log_response()
  • [sofia-sip] scan-build: Fix "The left operand of '<' is a garbage value" (prefs) in outgoing_naptr_tport() of nta.c
  • [sofia-sip] scan-build: Fix dereference of null pointer in outgoing_query_results().
  • [sofia-sip] scan-build: Null pointer passed as an argument to a 'null' parameter
  • [sofia-sip] scan-build: Value stored to 'ci' during its initialization is never read - sip_info_d()
  • [sofia-sip] scan-build: Value stored to 'contacts' is never read - nua_register_client_request()
  • [sofia-sip] scan-build: Value stored to 'end' during its initialization is never read - sip_info_d()
  • [sofia-sip] scan-build: Value stored to 'invite_timeout' is never read - nua_invite_client_request()
  • [sofia-sip] scan-build: Value stored to 'now' during its initialization is never read - _nta_incoming_timer()
  • [sofia-sip] scan-build: Value stored to 'options' is never read - tls_init_context()
  • [sofia-sip] scan-build: Value stored to 'phrase' is never read - auth_check_digest()
  • [sofia-sip] scan-build: Value stored to 'rest' is never read - msg_extract_payload()
  • [sofia-sip] scan-build: Value stored to 's' during its initialization is never read - nua_handle_contact_by_via()
  • [sofia-sip] scan-build: Value stored to 'tport' is never read - incoming_retransmit_reply()
  • [sofia-sip] scan-build: Value stored to 'why' is never read - tport_tcp_ping()
  • [sofia-sip] Sip crash on unresolvable dns resolution error of outbound request.
  • [spandsp] fix memcpy-param-overlap - use memmove()
  • [SpanDSP] Fix use of uninitialized xyz variable in set_illuminant_from_code()
  • [SpanDSP] Remove unused x_repeats variable from header_row_read_handler()
  • [spandsp] scan-build: Array subscript is undefined - test_cadence()
  • [spandsp] scan-build: Dereference of null pointer - at_put_response()
  • [spandsp] scan-build: Division by zero - test_cadence()
  • [spandsp] scan-build: Fix "Result of operation is garbage or undefined" in rpe_grid_selection()
  • [spandsp] scan-build: The left operand of '>' is a garbage value - super_tone_chunk()
  • [spandsp] scan-build: Value stored to 'res' is never read - t4_tx_set_tx_image_format()
  • [spandsp] scan-build: Value stored to 'result' is never read - read_tiff_t85_image()
  • [srtp] scan-build: Fix dead assignments.
  • [test] Fix out of bound buffer read in switch_test
  • [unit-tests] fix build switch_rtp on MacOS
  • [Unit-tests] Fix leaks mod_av and mod_conference tests, fix fonts and paths.
  • [unit-tests] scan-build: Result of 'malloc' is converted to a pointer of type 'char', which is incompatible with sizeof operand type 'int16_t'

Installation guides

https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+1.10.x+Release+notes