From 130ba7aeba07eb8bb3ea34418ca458bb58b05080 Mon Sep 17 00:00:00 2001 From: Bernhard Schmidt Date: Thu, 7 Mar 2019 17:13:24 -0500 Subject: [PATCH] Import asterisk_16.2.1~dfsg.orig.tar.xz [dgit import orig asterisk_16.2.1~dfsg.orig.tar.xz] --- .cleancount | 1 + .gitignore | 40 + .gitreview | 10 + .lastclean | 1 + .version | 1 + BSDmakefile | 11 + BUGS | 22 + CHANGES | 6625 ++ COPYING | 341 + CREDITS | 356 + ChangeLog | 82771 ++++++++++++++++ LICENSE | 62 + Makefile | 1151 + Makefile.moddir_rules | 162 + Makefile.rules | 195 + README-SERIOUSLY.bestpractices.md | 390 + README-addons.txt | 27 + README.md | 269 + UPGRADE-1.2.txt | 218 + UPGRADE-1.4.txt | 497 + UPGRADE-1.6.txt | 277 + UPGRADE-1.8.txt | 343 + UPGRADE-10.txt | 92 + UPGRADE-11.txt | 280 + UPGRADE-12.txt | 478 + UPGRADE-13.txt | 399 + UPGRADE-14.txt | 115 + UPGRADE-15.txt | 63 + UPGRADE.txt | 92 + Zaptel-to-DAHDI.txt | 53 + addons/.gitignore | 1 + addons/Makefile | 72 + addons/app_mysql.c | 667 + addons/cdr_mysql.c | 746 + addons/chan_mobile.c | 4823 + addons/chan_ooh323.c | 5250 + addons/chan_ooh323.h | 122 + addons/format_mp3.c | 329 + addons/ooh323c/COPYING | 341 + addons/ooh323c/README | 94 + addons/ooh323c/src/Makefile.in | 564 + addons/ooh323c/src/context.c | 172 + addons/ooh323c/src/decode.c | 1053 + addons/ooh323c/src/dlist.c | 260 + addons/ooh323c/src/dlist.h | 204 + addons/ooh323c/src/encode.c | 1111 + addons/ooh323c/src/errmgmt.c | 266 + addons/ooh323c/src/eventHandler.c | 125 + addons/ooh323c/src/eventHandler.h | 284 + .../ooh323c/src/h323/H235-SECURITY-MESSAGES.h | 690 + .../src/h323/H235-SECURITY-MESSAGESDec.c | 1799 + .../src/h323/H235-SECURITY-MESSAGESEnc.c | 1268 + addons/ooh323c/src/h323/H323-MESSAGES.c | 111 + addons/ooh323c/src/h323/H323-MESSAGES.h | 6510 ++ addons/ooh323c/src/h323/H323-MESSAGESDec.c | 27199 +++++ addons/ooh323c/src/h323/H323-MESSAGESEnc.c | 22595 +++++ .../src/h323/MULTIMEDIA-SYSTEM-CONTROL.c | 39 + .../src/h323/MULTIMEDIA-SYSTEM-CONTROL.h | 10937 ++ .../src/h323/MULTIMEDIA-SYSTEM-CONTROLDec.c | 42169 ++++++++ .../src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c | 26598 +++++ addons/ooh323c/src/memheap.c | 1352 + addons/ooh323c/src/memheap.h | 62 + addons/ooh323c/src/ooCalls.c | 958 + addons/ooh323c/src/ooCalls.h | 902 + addons/ooh323c/src/ooCapability.c | 3171 + addons/ooh323c/src/ooCapability.h | 796 + addons/ooh323c/src/ooCmdChannel.c | 429 + addons/ooh323c/src/ooCmdChannel.h | 94 + addons/ooh323c/src/ooCommon.h | 125 + addons/ooh323c/src/ooDateTime.c | 175 + addons/ooh323c/src/ooDateTime.h | 58 + addons/ooh323c/src/ooGkClient.c | 3031 + addons/ooh323c/src/ooGkClient.h | 571 + addons/ooh323c/src/ooLogChan.c | 419 + addons/ooh323c/src/ooLogChan.h | 195 + addons/ooh323c/src/ooSocket.c | 803 + addons/ooh323c/src/ooSocket.h | 413 + addons/ooh323c/src/ooStackCmds.c | 681 + addons/ooh323c/src/ooStackCmds.h | 188 + addons/ooh323c/src/ooTimer.c | 195 + addons/ooh323c/src/ooTimer.h | 128 + addons/ooh323c/src/ooUtils.c | 43 + addons/ooh323c/src/ooUtils.h | 53 + addons/ooh323c/src/ooasn1.h | 1830 + addons/ooh323c/src/oochannels.c | 2019 + addons/ooh323c/src/oochannels.h | 218 + addons/ooh323c/src/ooh245.c | 4707 + addons/ooh323c/src/ooh245.h | 660 + addons/ooh323c/src/ooh323.c | 2656 + addons/ooh323c/src/ooh323.h | 186 + addons/ooh323c/src/ooh323ep.c | 869 + addons/ooh323c/src/ooh323ep.h | 679 + addons/ooh323c/src/oohdr.h | 15 + addons/ooh323c/src/ooper.h | 21 + addons/ooh323c/src/ooports.c | 114 + addons/ooh323c/src/ooports.h | 91 + addons/ooh323c/src/ooq931.c | 4259 + addons/ooh323c/src/ooq931.h | 785 + addons/ooh323c/src/ootrace.c | 133 + addons/ooh323c/src/ootrace.h | 153 + addons/ooh323c/src/ootypes.h | 268 + addons/ooh323c/src/perutil.c | 288 + addons/ooh323c/src/printHandler.c | 285 + addons/ooh323c/src/printHandler.h | 47 + addons/ooh323c/src/rtctype.c | 171 + addons/ooh323c/src/rtctype.h | 85 + addons/ooh323cDriver.c | 696 + addons/ooh323cDriver.h | 45 + addons/res_config_mysql.c | 1563 + agi/.gitignore | 3 + agi/DialAnMp3.agi | 82 + agi/Makefile | 56 + agi/agi-test.agi | 79 + agi/agi.xml | 18 + agi/eagi-sphinx-test.c | 236 + agi/eagi-test.c | 173 + agi/fastagi-test | 94 + agi/jukebox.agi | 488 + agi/numeralize | 44 + apps/Makefile | 41 + apps/app_adsiprog.c | 1617 + apps/app_agent_pool.c | 2716 + apps/app_alarmreceiver.c | 1000 + apps/app_amd.c | 546 + apps/app_authenticate.c | 277 + apps/app_bridgeaddchan.c | 122 + apps/app_bridgewait.c | 512 + apps/app_cdr.c | 268 + apps/app_celgenuserevent.c | 107 + apps/app_chanisavail.c | 212 + apps/app_channelredirect.c | 117 + apps/app_chanspy.c | 1503 + apps/app_confbridge.c | 4247 + apps/app_controlplayback.c | 349 + apps/app_dahdiras.c | 229 + apps/app_db.c | 109 + apps/app_dial.c | 3379 + apps/app_dictate.c | 356 + apps/app_directed_pickup.c | 492 + apps/app_directory.c | 992 + apps/app_disa.c | 423 + apps/app_dumpchan.c | 207 + apps/app_echo.c | 113 + apps/app_exec.c | 300 + apps/app_externalivr.c | 907 + apps/app_fax.c | 1001 + apps/app_festival.c | 578 + apps/app_flash.c | 118 + apps/app_followme.c | 1657 + apps/app_forkcdr.c | 223 + apps/app_getcpeid.c | 144 + apps/app_ices.c | 214 + apps/app_image.c | 107 + apps/app_ivrdemo.c | 127 + apps/app_jack.c | 1052 + apps/app_macro.c | 689 + apps/app_meetme.c | 8083 ++ apps/app_milliwatt.c | 178 + apps/app_minivm.c | 3597 + apps/app_mixmonitor.c | 1564 + apps/app_morsecode.c | 187 + apps/app_mp3.c | 301 + apps/app_nbscat.c | 223 + apps/app_originate.c | 334 + apps/app_osplookup.c | 3169 + apps/app_page.c | 448 + apps/app_playback.c | 577 + apps/app_playtones.c | 131 + apps/app_privacy.c | 222 + apps/app_queue.c | 11404 +++ apps/app_read.c | 281 + apps/app_readexten.c | 278 + apps/app_record.c | 542 + apps/app_saycounted.c | 206 + apps/app_sayunixtime.c | 193 + apps/app_senddtmf.c | 199 + apps/app_sendtext.c | 250 + apps/app_skel.c | 773 + apps/app_sms.c | 2095 + apps/app_softhangup.c | 147 + apps/app_speech_utils.c | 1007 + apps/app_stack.c | 1324 + apps/app_stasis.c | 141 + apps/app_statsd.c | 428 + apps/app_stream_echo.c | 345 + apps/app_system.c | 194 + apps/app_talkdetect.c | 257 + apps/app_test.c | 500 + apps/app_transfer.c | 144 + apps/app_url.c | 180 + apps/app_userevent.c | 135 + apps/app_verbose.c | 171 + apps/app_voicemail.c | 16795 ++++ apps/app_voicemail.exports.in | 20 + apps/app_waitforring.c | 141 + apps/app_waitforsilence.c | 320 + apps/app_waituntil.c | 120 + apps/app_while.c | 362 + apps/app_zapateller.c | 138 + apps/confbridge/conf_chan_announce.c | 179 + apps/confbridge/conf_chan_record.c | 105 + apps/confbridge/conf_config_parser.c | 2614 + apps/confbridge/conf_state.c | 96 + apps/confbridge/conf_state_empty.c | 86 + apps/confbridge/conf_state_inactive.c | 73 + apps/confbridge/conf_state_multi.c | 72 + apps/confbridge/conf_state_multi_marked.c | 219 + apps/confbridge/conf_state_single.c | 89 + apps/confbridge/conf_state_single_marked.c | 84 + apps/confbridge/confbridge_manager.c | 860 + apps/confbridge/include/conf_state.h | 95 + apps/confbridge/include/confbridge.h | 714 + apps/enter.h | 287 + apps/leave.h | 207 + asterisk-16.2.1-summary.html | 23 + asterisk-16.2.1-summary.txt | 107 + autoconf/ast_c_compile_check.m4 | 27 + autoconf/ast_c_declare_check.m4 | 31 + autoconf/ast_c_define_check.m4 | 33 + autoconf/ast_check_gnu_make.m4 | 20 + autoconf/ast_check_mandatory.m4 | 23 + autoconf/ast_check_osptk.m4 | 66 + autoconf/ast_check_raii.m4 | 56 + autoconf/ast_check_strsep_array_bounds.m4 | 81 + autoconf/ast_ext_lib.m4 | 307 + autoconf/ast_ext_tool_check.m4 | 40 + autoconf/ast_func_fork.m4 | 61 + autoconf/ast_gcc_attribute.m4 | 27 + autoconf/ast_pkgconfig.m4 | 16 + autoconf/ast_prog_egrep.m4 | 11 + autoconf/ast_prog_ld.m4 | 83 + autoconf/ast_prog_ld_gnu.m4 | 16 + autoconf/ast_prog_sed.m4 | 21 + autoconf/ax_pthread.m4 | 485 + autoconf/libcurl.m4 | 274 + bootstrap.sh | 35 + bridges/Makefile | 28 + bridges/bridge_builtin_features.c | 529 + bridges/bridge_builtin_interval_features.c | 215 + bridges/bridge_holding.c | 446 + bridges/bridge_native_rtp.c | 964 + bridges/bridge_simple.c | 224 + bridges/bridge_softmix.c | 2569 + .../bridge_softmix/bridge_softmix_binaural.c | 580 + .../include/bridge_softmix_internal.h | 442 + bridges/bridge_softmix/include/hrirs.h | 50730 ++++++++++ .../include/hrirs_configuration.h | 63 + bridges/bridges.xml | 8 + build_tools/.gitignore | 1 + build_tools/cflags-devmode.xml | 27 + build_tools/cflags.xml | 131 + build_tools/download_externals | 237 + build_tools/find_missing_support_level | 3 + build_tools/get_documentation | 3 + build_tools/get_documentation.py | 172 + build_tools/get_makeopts | 3 + build_tools/get_moduleinfo | 4 + build_tools/install_subst | 43 + build_tools/list_valid_installed_externals | 66 + build_tools/make_build_h | 20 + build_tools/make_buildopts_h | 59 + build_tools/make_check_alembic | 29 + build_tools/make_defaults_h | 29 + build_tools/make_linker_eo_script | 27 + build_tools/make_linker_version_script | 6 + build_tools/make_sample_voicemail | 25 + build_tools/make_version | 190 + build_tools/make_version_c | 61 + build_tools/menuselect-deps.in | 85 + build_tools/mkpkgconfig | 50 + build_tools/post_process_documentation.py | 106 + build_tools/prep_tarball | 29 + build_tools/sha1sum-sh | 70 + cdr/Makefile | 20 + cdr/cdr_adaptive_odbc.c | 835 + cdr/cdr_beanstalkd.c | 270 + cdr/cdr_csv.c | 364 + cdr/cdr_custom.c | 235 + cdr/cdr_manager.c | 375 + cdr/cdr_odbc.c | 332 + cdr/cdr_pgsql.c | 798 + cdr/cdr_radius.c | 291 + cdr/cdr_sqlite3_custom.c | 364 + cdr/cdr_syslog.c | 296 + cdr/cdr_tds.c | 639 + cel/Makefile | 20 + cel/cel_beanstalkd.c | 276 + cel/cel_custom.c | 227 + cel/cel_manager.c | 384 + cel/cel_odbc.c | 860 + cel/cel_pgsql.c | 713 + cel/cel_radius.c | 263 + cel/cel_sqlite3_custom.c | 364 + cel/cel_tds.c | 584 + channels/Makefile | 42 + channels/chan_alsa.c | 1043 + channels/chan_bridge_media.c | 219 + channels/chan_console.c | 1590 + channels/chan_dahdi.c | 19581 ++++ channels/chan_dahdi.h | 845 + channels/chan_iax2.c | 14951 +++ channels/chan_mgcp.c | 5031 + channels/chan_misdn.c | 12838 +++ channels/chan_motif.c | 2829 + channels/chan_nbs.c | 273 + channels/chan_oss.c | 1527 + channels/chan_phone.c | 1517 + channels/chan_phone.h | 257 + channels/chan_pjsip.c | 3209 + channels/chan_rtp.c | 436 + channels/chan_sip.c | 35783 +++++++ channels/chan_skinny.c | 8839 ++ channels/chan_unistim.c | 7213 ++ channels/chan_vpb.cc | 2878 + channels/console_board.c | 349 + channels/console_gui.c | 1662 + channels/console_video.c | 1290 + channels/console_video.h | 143 + channels/dahdi/bridge_native_dahdi.c | 914 + channels/dahdi/bridge_native_dahdi.h | 47 + channels/iax2/codec_pref.c | 532 + channels/iax2/firmware.c | 341 + channels/iax2/format_compatibility.c | 134 + channels/iax2/include/astobj.h | 823 + channels/iax2/include/codec_pref.h | 150 + channels/iax2/include/firmware.h | 105 + channels/iax2/include/format_compatibility.h | 65 + channels/iax2/include/iax2.h | 301 + channels/iax2/include/netsock.h | 74 + channels/iax2/include/parser.h | 179 + channels/iax2/include/provision.h | 58 + channels/iax2/netsock.c | 201 + channels/iax2/parser.c | 1337 + channels/iax2/provision.c | 567 + channels/misdn/Makefile | 17 + channels/misdn/chan_misdn_config.h | 172 + channels/misdn/ie.c | 1414 + channels/misdn/isdn_lib.c | 4819 + channels/misdn/isdn_lib.h | 833 + channels/misdn/isdn_lib_intern.h | 159 + channels/misdn/isdn_msg_parser.c | 1769 + channels/misdn/portinfo.c | 205 + channels/misdn_config.c | 1273 + channels/pjsip/cli_commands.c | 492 + channels/pjsip/dialplan_functions.c | 1623 + channels/pjsip/include/chan_pjsip.h | 45 + channels/pjsip/include/cli_functions.h | 45 + channels/pjsip/include/dialplan_functions.h | 126 + channels/sig_analog.c | 4028 + channels/sig_analog.h | 401 + channels/sig_pri.c | 10165 ++ channels/sig_pri.h | 733 + channels/sig_ss7.c | 3412 + channels/sig_ss7.h | 390 + channels/sip/config_parser.c | 926 + channels/sip/dialplan_functions.c | 511 + channels/sip/include/config_parser.h | 68 + channels/sip/include/dialog.h | 82 + channels/sip/include/dialplan_functions.h | 41 + channels/sip/include/globals.h | 41 + channels/sip/include/reqresp_parser.h | 250 + channels/sip/include/route.h | 120 + channels/sip/include/security_events.h | 44 + channels/sip/include/sip.h | 1889 + channels/sip/include/sip_utils.h | 89 + channels/sip/reqresp_parser.c | 2690 + channels/sip/route.c | 203 + channels/sip/security_events.c | 358 + channels/sip/utils.c | 49 + channels/vcodecs.c | 1258 + channels/vgrabbers.c | 347 + codecs/Makefile | 93 + codecs/codec_a_mu.c | 150 + codecs/codec_adpcm.c | 359 + codecs/codec_alaw.c | 143 + codecs/codec_codec2.c | 222 + codecs/codec_dahdi.c | 873 + codecs/codec_g722.c | 254 + codecs/codec_g726.c | 903 + codecs/codec_gsm.c | 252 + codecs/codec_ilbc.c | 276 + codecs/codec_lpc10.c | 285 + codecs/codec_resample.c | 189 + codecs/codec_speex.c | 730 + codecs/codec_ulaw.c | 194 + codecs/codecs.xml | 37 + codecs/ex_adpcm.h | 33 + codecs/ex_alaw.h | 36 + codecs/ex_codec2.h | 32 + codecs/ex_g722.h | 48 + codecs/ex_g726.h | 33 + codecs/ex_gsm.h | 33 + codecs/ex_ilbc.h | 37 + codecs/ex_lpc10.h | 31 + codecs/ex_speex.h | 65 + codecs/ex_ulaw.h | 38 + codecs/g722/g722.h | 148 + codecs/g722/g722_decode.c | 398 + codecs/g722/g722_encode.c | 400 + codecs/gsm/COPYRIGHT | 16 + codecs/gsm/Makefile | 515 + codecs/gsm/README | 37 + codecs/gsm/inc/config.h | 51 + codecs/gsm/inc/gsm.h | 71 + codecs/gsm/inc/private.h | 312 + codecs/gsm/inc/proto.h | 65 + codecs/gsm/inc/unproto.h | 23 + codecs/gsm/libgsm.vcproj | 253 + codecs/gsm/src/add.c | 235 + codecs/gsm/src/code.c | 98 + codecs/gsm/src/debug.c | 76 + codecs/gsm/src/decode.c | 62 + codecs/gsm/src/gsm_create.c | 43 + codecs/gsm/src/gsm_decode.c | 361 + codecs/gsm/src/gsm_destroy.c | 26 + codecs/gsm/src/gsm_encode.c | 451 + codecs/gsm/src/gsm_explode.c | 417 + codecs/gsm/src/gsm_implode.c | 515 + codecs/gsm/src/gsm_option.c | 69 + codecs/gsm/src/gsm_print.c | 167 + codecs/gsm/src/k6opt.h | 84 + codecs/gsm/src/k6opt.s | 0 codecs/gsm/src/long_term.c | 955 + codecs/gsm/src/lpc.c | 372 + codecs/gsm/src/preprocess.c | 127 + codecs/gsm/src/rpe.c | 490 + codecs/gsm/src/short_term.c | 448 + codecs/gsm/src/table.c | 63 + codecs/log2comp.h | 74 + codecs/lpc10/Makefile | 52 + codecs/lpc10/README | 89 + codecs/lpc10/analys.c | 649 + codecs/lpc10/bsynz.c | 447 + codecs/lpc10/chanwr.c | 233 + codecs/lpc10/dcbias.c | 106 + codecs/lpc10/decode.c | 625 + codecs/lpc10/deemp.c | 154 + codecs/lpc10/difmag.c | 132 + codecs/lpc10/dyptrk.c | 404 + codecs/lpc10/encode.c | 372 + codecs/lpc10/energy.c | 102 + codecs/lpc10/f2c.h | 325 + codecs/lpc10/f2clib.c | 85 + codecs/lpc10/ham84.c | 125 + codecs/lpc10/hp100.c | 169 + codecs/lpc10/invert.c | 193 + codecs/lpc10/irc2pc.c | 150 + codecs/lpc10/ivfilt.c | 135 + codecs/lpc10/liblpc10.vcproj | 305 + codecs/lpc10/lpc10.h | 256 + codecs/lpc10/lpcdec.c | 297 + codecs/lpc10/lpcenc.c | 181 + codecs/lpc10/lpcini.c | 447 + codecs/lpc10/lpfilt.c | 124 + codecs/lpc10/median.c | 88 + codecs/lpc10/mload.c | 162 + codecs/lpc10/onset.c | 324 + codecs/lpc10/pitsyn.c | 583 + codecs/lpc10/placea.c | 241 + codecs/lpc10/placev.c | 274 + codecs/lpc10/preemp.c | 143 + codecs/lpc10/prepro.c | 116 + codecs/lpc10/random.c | 124 + codecs/lpc10/rcchk.c | 118 + codecs/lpc10/synths.c | 425 + codecs/lpc10/tbdm.c | 187 + codecs/lpc10/voicin.c | 786 + codecs/lpc10/vparms.c | 254 + codecs/speex/arch.h | 241 + codecs/speex/fixed_generic.h | 106 + codecs/speex/resample.c | 1124 + codecs/speex/resample_sse.h | 128 + codecs/speex/speex_resampler.h | 344 + codecs/speex/stack_alloc.h | 115 + config.guess | 1488 + config.sub | 1791 + configs/basic-pbx/README | 15 + configs/basic-pbx/asterisk.conf | 13 + configs/basic-pbx/cdr.conf | 7 + configs/basic-pbx/cdr_custom.conf | 4 + configs/basic-pbx/confbridge.conf | 1 + configs/basic-pbx/extensions.conf | 179 + configs/basic-pbx/indications.conf | 18 + configs/basic-pbx/logger.conf | 9 + configs/basic-pbx/modules.conf | 115 + configs/basic-pbx/musiconhold.conf | 5 + configs/basic-pbx/pjsip.conf | 328 + configs/basic-pbx/voicemail.conf | 23 + configs/samples/acl.conf.sample | 80 + configs/samples/adsi.conf.sample | 8 + configs/samples/agents.conf.sample | 70 + configs/samples/alarmreceiver.conf.sample | 91 + configs/samples/alsa.conf.sample | 77 + configs/samples/amd.conf.sample | 27 + configs/samples/app_mysql.conf.sample | 24 + configs/samples/app_skel.conf.sample | 27 + configs/samples/ari.conf.sample | 35 + configs/samples/ast_debug_tools.conf.sample | 63 + configs/samples/asterisk.adsi | 158 + configs/samples/asterisk.conf.sample | 127 + configs/samples/calendar.conf.sample | 111 + configs/samples/ccss.conf.sample | 205 + configs/samples/cdr.conf.sample | 166 + configs/samples/cdr_adaptive_odbc.conf.sample | 62 + configs/samples/cdr_beanstalkd.conf.sample | 20 + configs/samples/cdr_custom.conf.sample | 14 + configs/samples/cdr_manager.conf.sample | 15 + configs/samples/cdr_mysql.conf.sample | 62 + configs/samples/cdr_odbc.conf.sample | 12 + configs/samples/cdr_pgsql.conf.sample | 16 + .../samples/cdr_sqlite3_custom.conf.sample | 11 + configs/samples/cdr_syslog.conf.sample | 83 + configs/samples/cdr_tds.conf.sample | 77 + configs/samples/cel.conf.sample | 116 + configs/samples/cel_beanstalkd.conf.sample | 21 + configs/samples/cel_custom.conf.sample | 35 + configs/samples/cel_odbc.conf.sample | 108 + configs/samples/cel_pgsql.conf.sample | 73 + .../samples/cel_sqlite3_custom.conf.sample | 25 + configs/samples/cel_tds.conf.sample | 69 + configs/samples/chan_dahdi.conf.sample | 1717 + configs/samples/chan_mobile.conf.sample | 69 + configs/samples/cli.conf.sample | 12 + configs/samples/cli_aliases.conf.sample | 203 + configs/samples/cli_permissions.conf.sample | 82 + configs/samples/codecs.conf.sample | 214 + configs/samples/confbridge.conf.sample | 436 + configs/samples/config_test.conf.sample | 46 + configs/samples/console.conf.sample | 97 + configs/samples/dbsep.conf.sample | 34 + configs/samples/dnsmgr.conf.sample | 5 + configs/samples/dsp.conf.sample | 42 + configs/samples/dundi.conf.sample | 275 + configs/samples/enum.conf.sample | 22 + configs/samples/extconfig.conf.sample | 111 + configs/samples/extensions.ael.sample | 456 + configs/samples/extensions.conf.sample | 862 + configs/samples/extensions.lua.sample | 240 + configs/samples/extensions_minivm.conf.sample | 156 + configs/samples/features.conf.sample | 122 + configs/samples/festival.conf.sample | 34 + configs/samples/followme.conf.sample | 107 + configs/samples/func_odbc.conf.sample | 109 + configs/samples/hep.conf.sample | 32 + configs/samples/http.conf.sample | 126 + configs/samples/iax.conf.sample | 669 + configs/samples/iaxprov.conf.sample | 80 + configs/samples/indications.conf.sample | 736 + configs/samples/logger.conf.sample | 166 + configs/samples/manager.conf.sample | 156 + configs/samples/meetme.conf.sample | 45 + configs/samples/mgcp.conf.sample | 142 + configs/samples/minivm.conf.sample | 218 + configs/samples/misdn.conf.sample | 537 + configs/samples/modules.conf.sample | 44 + configs/samples/motif.conf.sample | 99 + configs/samples/musiconhold.conf.sample | 122 + configs/samples/muted.conf.sample | 39 + configs/samples/ooh323.conf.sample | 203 + configs/samples/osp.conf.sample | 117 + configs/samples/oss.conf.sample | 152 + configs/samples/phone.conf.sample | 51 + configs/samples/phoneprov.conf.sample | 142 + configs/samples/pjproject.conf.sample | 56 + configs/samples/pjsip.conf.sample | 1367 + configs/samples/pjsip_notify.conf.sample | 57 + configs/samples/pjsip_wizard.conf.sample | 163 + configs/samples/queuerules.conf.sample | 47 + configs/samples/queues.conf.sample | 562 + configs/samples/res_config_mysql.conf.sample | 43 + configs/samples/res_config_sqlite.conf.sample | 11 + .../samples/res_config_sqlite3.conf.sample | 35 + configs/samples/res_corosync.conf.sample | 31 + configs/samples/res_curl.conf.sample | 8 + configs/samples/res_fax.conf.sample | 32 + configs/samples/res_ldap.conf.sample | 198 + configs/samples/res_odbc.conf.sample | 111 + configs/samples/res_parking.conf.sample | 163 + configs/samples/res_pgsql.conf.sample | 30 + configs/samples/res_pktccops.conf.sample | 32 + configs/samples/res_snmp.conf.sample | 22 + configs/samples/res_stun_monitor.conf.sample | 27 + configs/samples/resolver_unbound.conf.sample | 23 + configs/samples/rtp.conf.sample | 130 + configs/samples/say.conf.sample | 383 + configs/samples/sip.conf.sample | 1619 + configs/samples/sip_notify.conf.sample | 57 + configs/samples/skinny.conf.sample | 207 + configs/samples/sla.conf.sample | 150 + configs/samples/smdi.conf.sample | 75 + configs/samples/sorcery.conf.sample | 78 + configs/samples/ss7.timers.sample | 65 + configs/samples/stasis.conf.sample | 132 + configs/samples/statsd.conf.sample | 8 + configs/samples/telcordia-1.adsi | 83 + configs/samples/test_sorcery.conf.sample | 14 + configs/samples/udptl.conf.sample | 26 + configs/samples/unistim.conf.sample | 88 + configs/samples/users.conf.sample | 113 + configs/samples/voicemail.conf.sample | 500 + configs/samples/vpb.conf.sample | 248 + configs/samples/xmpp.conf.sample | 64 + configure | 35985 +++++++ configure.ac | 2886 + contrib/Makefile | 37 + contrib/README.festival | 47 + contrib/ast-db-manage/README.md | 64 + contrib/ast-db-manage/cdr.ini.sample | 57 + contrib/ast-db-manage/cdr/env.py | 1 + contrib/ast-db-manage/cdr/script.py.mako | 22 + .../versions/210693f3123d_create_cdr_table.py | 63 + .../54cde9847798_expand_accountcode_to_80.py | 26 + contrib/ast-db-manage/config.ini.sample | 57 + contrib/ast-db-manage/config/env.py | 1 + contrib/ast-db-manage/config/script.py.mako | 22 + .../041c0d3d1857_add_dtls_auto_gen_cert.py | 33 + ...jsip_add_send_contact_status_on_update_.py | 39 + .../0be05c3a8225_add_early_media_options.py | 37 + .../10aedae86a32_add_outgoing_enum_va.py | 83 + .../136885b81223_add_regcontext_to_pj.py | 20 + .../154177371065_add_default_from_user.py | 22 + ...6f1_add_moh_passthrough_option_to_pjsip.py | 33 + .../versions/15db7b91a97a_add_rtcp_mux.py | 33 + ...08c_add_auto_info_to_endpoint_dtmf_mode.py | 58 + ...8e8bbf6b_increase_useragent_column_size.py | 40 + .../189a235b3fd7_add_keep_alive_interval.py | 22 + ...7b_add_suppress_q850_reason_headers_to_.py | 27 + ...a8_add_pjsip_trust_send__connected_line.py | 40 + .../1c688d9a003c_pjsip_voicemail_extension.py | 28 + .../versions/1d0e332c32af_create_rls_table.py | 39 + .../1d3ed26d9978_increase_uri_column_size.py | 22 + .../1d50859ed02e_create_accountcode.py | 20 + .../20abce6d1e3c_add_pjsip_identify_by_ip.py | 46 + .../21e526ad3040_add_pjsip_debug_option.py | 21 + .../23530d604b96_add_rpid_immediate.py | 50 + ..._add_bind_rtp_to_media_address_to_pjsip.py | 33 + .../26f10cadc157_add_pjsip_timeout_options.py | 24 + .../28887f25a46f_create_queue_tables.py | 140 + ...8ab27a7826d_add_srv_lookups_to_identify.py | 33 + .../28b8e71e541f_add_g726_non_standard.py | 32 + ...8ce1e718f05_add_fatal_response_interval.py | 22 + ...a85135ad_pjsip_add_use_callerid_contact.py | 39 + ...078ec071b7_increaes_contact_column_size.py | 22 + .../2da192dbbc65_add_publish_tables.py | 73 + ...1b3_add_pjsip_endpoint_options_for_12_1.py | 177 + .../31cd4f4891ec_add_auto_dtmf_mode.py | 58 + .../339a3bdf53fc_expand_accountcode_to_80.py | 34 + ...4143e_add_user_eq_phone_option_to_pjsip.py | 32 + .../3772f8f828da_update_identify_by.py | 46 + .../3855ee4e5f85_add_missing_pjsip_options.py | 24 + .../39959b9c2566_pjsip_stream_maximum.py | 24 + ...bc2c9_add_allow_reload_to_ps_transports.py | 27 + .../423f34ad36e2_fix_pjsip_qualify_ti.py | 23 + .../43956d550a44_add_tables_for_pjsip.py | 202 + ...b4a91372_add_pjsip_asymmetric_rtp_codec.py | 33 + .../versions/44ccced114ce_add_webrtc.py | 31 + ...c44_add_pjsip_endpoint_identifier_order.py | 21 + .../461d7d691209_add_pjsip_qualify_timeout.py | 22 + ..._add_match_header_attribute_to_identify.py | 21 + .../498357a710ae_add_rtp_keepalive.py | 22 + ...c67fa9b7a_add_fax_detect_timeout_option.py | 22 + .../4c573e7135bd_fix_tos_field_types.py | 54 + .../versions/4da0c5f79a9c_create_tables.py | 342 + ...2493ef32e6_add_contact_user_to_endpoint.py | 22 + ...253c0423_make_q_member_uniqueid_autoinc.py | 55 + .../51f8cb66540e_add_further_dtls_options.py | 35 + ...798ad97bdf_add_pjsip_identify_by_header.py | 57 + ..._add_contact_expiration_check_interval_.py | 20 + .../581a4264e537_adding_extensions.py | 48 + .../5950038a6ead_fix_pjsip_verifiy_typo.py | 42 + ...95_add_unidentified_request_options_to_.py | 27 + ...184_res_pjsip_add_contact_via_addr_and_.py | 25 + ...dd_preferred_codec_only_option_to_pjsip.py | 30 + ...44c775_fix_suppress_q850_reason_headers.py | 43 + ...b01a191a46_pjsip_add_contact_reg_server.py | 23 + ...b_add_pjsip_endpoint_ip_access_control_.py | 32 + ...fb_ps_contacts_add_authenticate_qualify.py | 33 + ...d_add_ps_endpoints_refer_blind_progress.py | 32 + ...8ab86e29_pjsip_add_disable_multi_domain.py | 33 + .../8fce4c573e15_add_pjsip_allow_overlap.py | 33 + ...dd_media_encryption_optimistic_to_pjsip.py | 33 + ...deac0ae4717_pjsip_add_subscribe_context.py | 21 + .../a1698e8bb9c5_add_incoming_mwi_mailbox.py | 21 + ...5e89_add_pjsip_max_initial_qualify_time.py | 20 + ..._ps_globals_add_ignore_uri_user_options.py | 33 + ...dd_add_dtls_fingerprint_to_ps_endpoints.py | 40 + ..._create_pjsip_subscription_persistence_.py | 36 + ...a44a5a0851_pjsip_add_global_mwi_options.py | 37 + .../d39508cb8d8_create_queue_rules.py | 30 + ...7_add_prune_on_boot_to_ps_subscription_.py | 33 + ...96_add_ps_endpoints_notify_early_inuse_.py | 32 + ...a908_add_missing_columns_to_sys_and_reg.py | 37 + ...de83fac997e2_add_bundle_to_ps_endpoints.py | 34 + ...d309071_add_wrapuptime_to_queue_members.py | 22 + .../e96a0b8071c_increase_pjsip_column_size.py | 42 + ...64_ps_contacts_add_endpoint_and_modify_.py | 37 + .../f3d1c5d38b56_add_prune_on_boot.py | 33 + .../f638dbe2eb23_symmetric_transport.py | 34 + ...e6592859b85_fix_mwi_subscribe_replaces_.py | 61 + contrib/ast-db-manage/env.py | 152 + contrib/ast-db-manage/voicemail.ini.sample | 57 + contrib/ast-db-manage/voicemail/env.py | 1 + .../ast-db-manage/voicemail/script.py.mako | 22 + ...8242f7f5_increase_recording_column_size.py | 43 + .../versions/a2e9769475e_create_tables.py | 58 + contrib/asterisk-doxygen-header | 10 + contrib/asterisk-ices.xml | 93 + contrib/dictionary.digium | 31 + contrib/docker/Dockerfile.asterisk | 19 + contrib/docker/Dockerfile.packager | 9 + contrib/docker/README.md | 39 + contrib/docker/make-package.sh | 72 + contrib/editors/ael.vim | 69 + contrib/editors/asterisk.vim | 100 + contrib/editors/asteriskvm.vim | 62 + contrib/festival-1.4.1-diff | 76 + contrib/festival-1.4.2.diff | 75 + contrib/festival-1.4.3.diff | 93 + contrib/festival-1.95.diff | 107 + contrib/i18n.testsuite.conf | 185 + contrib/init.d/etc_default_asterisk | 45 + contrib/init.d/org.asterisk.asterisk.plist | 47 + contrib/init.d/org.asterisk.muted.plist | 33 + contrib/init.d/rc.archlinux.asterisk | 64 + contrib/init.d/rc.debian.asterisk | 143 + contrib/init.d/rc.gentoo.asterisk | 38 + contrib/init.d/rc.mandriva.asterisk | 206 + contrib/init.d/rc.mandriva.zaptel | 107 + contrib/init.d/rc.redhat.asterisk | 178 + contrib/init.d/rc.slackware.asterisk | 62 + contrib/init.d/rc.suse.asterisk | 176 + contrib/realtime/mssql/mssql_cdr.sql | 59 + contrib/realtime/mssql/mssql_config.sql | 2132 + contrib/realtime/mssql/mssql_voicemail.sql | 55 + contrib/realtime/mysql/mysql_cdr.sql | 41 + contrib/realtime/mysql/mysql_config.sql | 1219 + contrib/realtime/mysql/mysql_voicemail.sql | 35 + contrib/realtime/oracle/oracle_cdr.sql | 53 + contrib/realtime/oracle/oracle_config.sql | 2090 + contrib/realtime/oracle/oracle_voicemail.sql | 49 + .../realtime/postgresql/postgresql_cdr.sql | 45 + .../realtime/postgresql/postgresql_config.sql | 1315 + .../postgresql/postgresql_voicemail.sql | 39 + contrib/scripts/README.messages-expire | 20 + contrib/scripts/agents.php | 73 + contrib/scripts/ast_coredumper | 703 + contrib/scripts/ast_grab_core | 70 + contrib/scripts/ast_logescalator | 399 + contrib/scripts/ast_loggrabber | 255 + contrib/scripts/ast_tls_cert | 221 + contrib/scripts/astcli | 166 + contrib/scripts/asterisk.ldap-schema | 841 + contrib/scripts/asterisk.ldif | 844 + contrib/scripts/asterisk.logrotate | 13 + contrib/scripts/astgenkey | 61 + contrib/scripts/astgenkey.8 | 143 + contrib/scripts/astversion | 536 + contrib/scripts/autosupport | 620 + contrib/scripts/autosupport.8 | 56 + contrib/scripts/clang-scan-build | 136 + contrib/scripts/dahdi_span_config_hook | 32 + contrib/scripts/dbsep.cgi | 250 + contrib/scripts/file.convert.sh | 20 + contrib/scripts/get_ilbc_source.sh | 34 + contrib/scripts/get_mp3_source.sh | 26 + contrib/scripts/get_swagger_ui.sh | 36 + contrib/scripts/import-cdr-csv-mysql.pl | 81 + contrib/scripts/install_prereq | 461 + contrib/scripts/live_ast | 293 + contrib/scripts/loadtest.tcl | 148 + contrib/scripts/lookup.agi | 90 + contrib/scripts/managerproxy.pl | 241 + contrib/scripts/messages-expire.pl | 96 + contrib/scripts/qview.pl | 100 + contrib/scripts/refcounter.py | 244 + contrib/scripts/reflocks.py | 118 + contrib/scripts/refstats.py | 180 + .../scripts/retrieve_extensions_from_mysql.pl | 112 + .../scripts/retrieve_extensions_from_sql.pl | 158 + .../scripts/retrieve_sip_conf_from_mysql.pl | 92 + contrib/scripts/safe_asterisk | 228 + contrib/scripts/safe_asterisk.8 | 69 + contrib/scripts/safe_asterisk_restart | 110 + contrib/scripts/sip_nat_settings | 72 + .../scripts/sip_to_pjsip/astconfigparser.py | 493 + contrib/scripts/sip_to_pjsip/astdicts.py | 300 + contrib/scripts/sip_to_pjsip/sip_to_pjsip.py | 1324 + contrib/scripts/sip_to_pjsip/sip_to_pjsql.py | 80 + .../scripts/sip_to_pjsip/sqlconfigparser.py | 73 + contrib/scripts/sipp-sendfax.xml | 331 + contrib/scripts/spandspflow2pcap.log | 605 + contrib/scripts/spandspflow2pcap.py | 197 + contrib/scripts/valgrind_compare | 21 + contrib/scripts/vmail.cgi | 1140 + contrib/scripts/voicemailpwcheck.py | 65 + contrib/systemd/README.txt | 122 + contrib/systemd/asterisk-ami.socket | 10 + contrib/systemd/asterisk-amis.socket | 10 + contrib/systemd/asterisk-cli.socket | 13 + contrib/systemd/asterisk-http.socket | 11 + contrib/systemd/asterisk-https.socket | 11 + contrib/systemd/asterisk.service | 27 + contrib/systemd/asterisk.socket | 26 + contrib/thirdparty/spexxilbcfix_xlite.reg | Bin 0 -> 452 bytes contrib/thirdparty/spexxilbcfix_xpro.reg | Bin 0 -> 450 bytes contrib/unistimLang/en.po | 262 + contrib/unistimLang/fr.po | 262 + contrib/unistimLang/ru.po | 220 + contrib/unistimLang/ru.po.utf8 | 267 + contrib/upstart/asterisk.upstart-0.3.9 | 37 + contrib/upstart/asterisk.user.conf | 39 + contrib/utils/README.rawplayer | 34 + contrib/utils/eagi_proxy.c | 419 + contrib/utils/rawplayer.c | 45 + contrib/utils/zones2indications.c | 153 + contrib/valgrind-RedHat-8.0.supp | 41 + contrib/valgrind.supp | 41 + default.exports | 8 + doc/.gitignore | 5 + doc/CODING-GUIDELINES | 2 + doc/IAX2-security.pdf | Bin 0 -> 358100 bytes doc/IAX2-security.txt | 440 + doc/Makefile | 5 + doc/README.txt | 14 + doc/aelparse.8 | 28 + doc/appdocsxml.dtd | 145 + doc/appdocsxml.xslt | 174 + doc/astdb2bdb.8 | 45 + doc/astdb2sqlite3.8 | 38 + doc/asterisk-ng-doxygen.in | 1689 + doc/asterisk.8 | 256 + doc/asterisk.sgml | 449 + doc/lang/hebrew.ods | Bin 0 -> 23306 bytes doc/lang/language-criteria.txt | 3 + doc/lang/urdu.ods | Bin 0 -> 14406 bytes doc/lang/vietnamese.ods | Bin 0 -> 20503 bytes doc/smsq.8 | 146 + formats/Makefile | 20 + formats/format_g719.c | 158 + formats/format_g723.c | 163 + formats/format_g726.c | 289 + formats/format_g729.c | 159 + formats/format_gsm.c | 203 + formats/format_h263.c | 190 + formats/format_h264.c | 183 + formats/format_ilbc.c | 156 + formats/format_ogg_speex.c | 345 + formats/format_ogg_vorbis.c | 449 + formats/format_pcm.c | 581 + formats/format_siren14.c | 159 + formats/format_siren7.c | 159 + formats/format_sln.c | 289 + formats/format_vox.c | 158 + formats/format_wav.c | 571 + formats/format_wav_gsm.c | 588 + formats/msgsm.h | 689 + funcs/Makefile | 29 + funcs/func_aes.c | 185 + funcs/func_base64.c | 157 + funcs/func_blacklist.c | 112 + funcs/func_callcompletion.c | 134 + funcs/func_callerid.c | 1884 + funcs/func_cdr.c | 712 + funcs/func_channel.c | 780 + funcs/func_config.c | 237 + funcs/func_curl.c | 942 + funcs/func_cut.c | 337 + funcs/func_db.c | 360 + funcs/func_devstate.c | 360 + funcs/func_dialgroup.c | 323 + funcs/func_dialplan.c | 199 + funcs/func_enum.c | 480 + funcs/func_env.c | 1288 + funcs/func_extstate.c | 148 + funcs/func_frame_trace.c | 446 + funcs/func_global.c | 331 + funcs/func_groupcount.c | 306 + funcs/func_hangupcause.c | 256 + funcs/func_holdintercept.c | 234 + funcs/func_iconv.c | 143 + funcs/func_jitterbuffer.c | 181 + funcs/func_lock.c | 528 + funcs/func_logic.c | 339 + funcs/func_math.c | 538 + funcs/func_md5.c | 82 + funcs/func_module.c | 85 + funcs/func_odbc.c | 1948 + funcs/func_periodic_hook.c | 522 + funcs/func_periodic_hook.exports.in | 7 + funcs/func_pitchshift.c | 510 + funcs/func_pjsip_aor.c | 189 + funcs/func_pjsip_contact.c | 206 + funcs/func_pjsip_endpoint.c | 164 + funcs/func_presencestate.c | 884 + funcs/func_rand.c | 107 + funcs/func_realtime.c | 547 + funcs/func_sha1.c | 92 + funcs/func_shell.c | 124 + funcs/func_sorcery.c | 218 + funcs/func_speex.c | 382 + funcs/func_sprintf.c | 232 + funcs/func_srv.c | 279 + funcs/func_strings.c | 2032 + funcs/func_sysinfo.c | 153 + funcs/func_talkdetect.c | 403 + funcs/func_timeout.c | 212 + funcs/func_uri.c | 123 + funcs/func_version.c | 134 + funcs/func_vmcount.c | 106 + funcs/func_volume.c | 239 + images/animlogo.gif | Bin 0 -> 63968 bytes images/asterisk-intro.jpg | Bin 0 -> 6143 bytes images/font.png | Bin 0 -> 1549 bytes images/kpad2.jpg | Bin 0 -> 29168 bytes images/play.gif | Bin 0 -> 341 bytes include/asterisk.h | 243 + include/asterisk/.gitignore | 3 + include/asterisk/_private.h | 128 + include/asterisk/abstract_jb.h | 310 + include/asterisk/acl.h | 400 + include/asterisk/adsi.h | 379 + include/asterisk/ael_structs.h | 125 + include/asterisk/agi.h | 148 + include/asterisk/alaw.h | 86 + include/asterisk/alertpipe.h | 160 + include/asterisk/aoc.h | 587 + include/asterisk/app.h | 1697 + include/asterisk/ari.h | 271 + include/asterisk/ast_expr.h | 56 + include/asterisk/ast_version.h | 47 + include/asterisk/astdb.h | 103 + include/asterisk/astmm.h | 317 + include/asterisk/astobj2.h | 2127 + include/asterisk/audiohook.h | 343 + include/asterisk/autochan.h | 139 + include/asterisk/autoconfig.h.in | 1510 + include/asterisk/backtrace.h | 112 + include/asterisk/beep.h | 45 + include/asterisk/bridge.h | 1207 + include/asterisk/bridge_after.h | 246 + include/asterisk/bridge_basic.h | 150 + include/asterisk/bridge_channel.h | 745 + include/asterisk/bridge_channel_internal.h | 262 + include/asterisk/bridge_features.h | 868 + include/asterisk/bridge_internal.h | 219 + include/asterisk/bridge_roles.h | 173 + include/asterisk/bridge_technology.h | 282 + include/asterisk/bucket.h | 477 + include/asterisk/buildinfo.h | 29 + include/asterisk/calendar.h | 206 + include/asterisk/callerid.h | 518 + include/asterisk/causes.h | 158 + include/asterisk/ccss.h | 1621 + include/asterisk/cdr.h | 587 + include/asterisk/cel.h | 299 + include/asterisk/celt.h | 37 + include/asterisk/channel.h | 5005 + include/asterisk/channel_internal.h | 35 + include/asterisk/channelstate.h | 56 + include/asterisk/chanvars.h | 63 + include/asterisk/cli.h | 390 + include/asterisk/codec.h | 200 + include/asterisk/compat.h | 217 + include/asterisk/compiler.h | 89 + include/asterisk/config.h | 1309 + include/asterisk/config_options.h | 855 + include/asterisk/conversions.h | 62 + include/asterisk/core_local.h | 170 + include/asterisk/core_unreal.h | 245 + include/asterisk/crypto.h | 187 + include/asterisk/data_buffer.h | 173 + include/asterisk/datastore.h | 161 + include/asterisk/devicestate.h | 346 + include/asterisk/dial.h | 233 + include/asterisk/dlinkedlists.h | 1239 + include/asterisk/dns.h | 88 + include/asterisk/dns_core.h | 276 + include/asterisk/dns_internal.h | 295 + include/asterisk/dns_naptr.h | 89 + include/asterisk/dns_query_set.h | 136 + include/asterisk/dns_recurring.h | 78 + include/asterisk/dns_resolver.h | 146 + include/asterisk/dns_srv.h | 71 + include/asterisk/dns_test.h | 109 + include/asterisk/dns_tlsa.h | 72 + include/asterisk/dnsmgr.h | 156 + include/asterisk/doxygen/architecture.h | 717 + include/asterisk/doxygen/licensing.h | 153 + include/asterisk/doxyref.h | 366 + include/asterisk/dsp.h | 196 + include/asterisk/dundi.h | 262 + include/asterisk/endian.h | 72 + include/asterisk/endpoints.h | 214 + include/asterisk/enum.h | 100 + include/asterisk/event.h | 359 + include/asterisk/event_defs.h | 362 + include/asterisk/extconf.h | 263 + include/asterisk/features.h | 111 + include/asterisk/features_config.h | 268 + include/asterisk/file.h | 446 + include/asterisk/format.h | 451 + include/asterisk/format_cache.h | 312 + include/asterisk/format_cap.h | 327 + include/asterisk/format_compatibility.h | 129 + include/asterisk/frame.h | 639 + include/asterisk/framehook.h | 393 + include/asterisk/fskmodem.h | 30 + include/asterisk/fskmodem_float.h | 71 + include/asterisk/fskmodem_int.h | 81 + include/asterisk/global_datastores.h | 35 + include/asterisk/hashtab.h | 405 + include/asterisk/heap.h | 264 + include/asterisk/http.h | 357 + include/asterisk/http_websocket.h | 446 + include/asterisk/ilbc.h | 8 + include/asterisk/image.h | 90 + include/asterisk/indications.h | 244 + include/asterisk/inline_api.h | 72 + include/asterisk/io.h | 180 + include/asterisk/iostream.h | 261 + include/asterisk/json.h | 1069 + include/asterisk/linkedlists.h | 886 + include/asterisk/localtime.h | 107 + include/asterisk/lock.h | 769 + include/asterisk/logger.h | 524 + include/asterisk/manager.h | 613 + include/asterisk/max_forwards.h | 78 + include/asterisk/md5.h | 39 + include/asterisk/media_cache.h | 175 + include/asterisk/media_index.h | 128 + include/asterisk/message.h | 537 + include/asterisk/mixmonitor.h | 105 + include/asterisk/mod_format.h | 151 + include/asterisk/module.h | 672 + include/asterisk/monitor.h | 66 + include/asterisk/multicast_rtp.h | 58 + include/asterisk/musiconhold.h | 60 + include/asterisk/named_locks.h | 99 + include/asterisk/netsock2.h | 790 + include/asterisk/network.h | 105 + include/asterisk/optional_api.h | 272 + include/asterisk/options.h | 207 + include/asterisk/opus.h | 64 + include/asterisk/parking.h | 296 + include/asterisk/paths.h | 45 + include/asterisk/pbx.h | 1684 + include/asterisk/phoneprov.h | 124 + include/asterisk/pickup.h | 91 + include/asterisk/pktccops.h | 82 + include/asterisk/plc.h | 153 + include/asterisk/poll-compat.h | 139 + include/asterisk/presencestate.h | 194 + include/asterisk/privacy.h | 46 + include/asterisk/pval.h | 273 + include/asterisk/res_fax.h | 305 + include/asterisk/res_hep.h | 135 + include/asterisk/res_mwi_external.h | 210 + include/asterisk/res_odbc.h | 251 + include/asterisk/res_odbc_transaction.h | 54 + include/asterisk/res_pjproject.h | 126 + include/asterisk/res_pjsip.h | 3209 + .../asterisk/res_pjsip_body_generator_types.h | 77 + include/asterisk/res_pjsip_cli.h | 110 + include/asterisk/res_pjsip_outbound_publish.h | 239 + include/asterisk/res_pjsip_presence_xml.h | 117 + include/asterisk/res_pjsip_pubsub.h | 757 + include/asterisk/res_pjsip_session.h | 902 + include/asterisk/res_srtp.h | 78 + include/asterisk/rtp_engine.h | 2699 + include/asterisk/say.h | 191 + include/asterisk/sched.h | 366 + include/asterisk/sdp_srtp.h | 226 + include/asterisk/security_events.h | 144 + include/asterisk/security_events_defs.h | 529 + include/asterisk/select.h | 112 + include/asterisk/sem.h | 178 + include/asterisk/sha1.h | 379 + include/asterisk/silk.h | 44 + include/asterisk/sip_api.h | 78 + include/asterisk/slin.h | 93 + include/asterisk/slinfactory.h | 121 + include/asterisk/smdi.h | 176 + include/asterisk/smoother.h | 90 + include/asterisk/sorcery.h | 1420 + include/asterisk/sounds_index.h | 60 + include/asterisk/speech.h | 160 + include/asterisk/spinlock.h | 488 + include/asterisk/srv.h | 106 + include/asterisk/stasis.h | 1528 + include/asterisk/stasis_app.h | 963 + include/asterisk/stasis_app_device_state.h | 95 + include/asterisk/stasis_app_impl.h | 108 + include/asterisk/stasis_app_mailbox.h | 91 + include/asterisk/stasis_app_playback.h | 168 + include/asterisk/stasis_app_recording.h | 321 + include/asterisk/stasis_app_snoop.h | 60 + include/asterisk/stasis_bridges.h | 524 + include/asterisk/stasis_cache_pattern.h | 207 + include/asterisk/stasis_channels.h | 634 + include/asterisk/stasis_endpoints.h | 234 + include/asterisk/stasis_internal.h | 73 + include/asterisk/stasis_message_router.h | 297 + include/asterisk/stasis_system.h | 136 + include/asterisk/stasis_test.h | 143 + include/asterisk/statsd.h | 149 + include/asterisk/stream.h | 526 + include/asterisk/stringfields.h | 643 + include/asterisk/strings.h | 1361 + include/asterisk/stun.h | 98 + include/asterisk/syslog.h | 95 + include/asterisk/taskprocessor.h | 357 + include/asterisk/tcptls.h | 220 + include/asterisk/tdd.h | 82 + include/asterisk/term.h | 148 + include/asterisk/test.h | 433 + include/asterisk/threadpool.h | 302 + include/asterisk/threadstorage.h | 262 + include/asterisk/time.h | 240 + include/asterisk/timing.h | 235 + include/asterisk/transcap.h | 46 + include/asterisk/translate.h | 376 + include/asterisk/udptl.h | 133 + include/asterisk/ulaw.h | 87 + include/asterisk/unaligned.h | 146 + include/asterisk/uri.h | 181 + include/asterisk/utils.h | 968 + include/asterisk/uuid.h | 118 + include/asterisk/vector.h | 900 + include/asterisk/version.h | 1 + include/asterisk/xml.h | 266 + include/asterisk/xmldoc.h | 206 + include/asterisk/xmpp.h | 274 + include/jitterbuf.h | 177 + include/solaris-compat/compat.h | 46 + include/solaris-compat/sys/cdefs.h | 10 + include/solaris-compat/sys/queue.h | 539 + install-sh | 269 + main/.gitignore | 6 + main/Makefile | 366 + main/abstract_jb.c | 1157 + main/acl.c | 1028 + main/adsi.c | 351 + main/alaw.c | 214 + main/alertpipe.c | 168 + main/aoc.c | 2032 + main/app.c | 3466 + main/ast_expr2.c | 3688 + main/ast_expr2.fl | 475 + main/ast_expr2.h | 103 + main/ast_expr2.y | 1681 + main/ast_expr2f.c | 2625 + main/asterisk.c | 4233 + main/asterisk.dynamics | 15 + main/asterisk.exports.in | 69 + main/astfd.c | 374 + main/astmm.c | 1763 + main/astobj2.c | 1257 + main/astobj2_container.c | 1198 + main/astobj2_container_private.h | 331 + main/astobj2_hash.c | 1102 + main/astobj2_private.h | 66 + main/astobj2_rbtree.c | 2054 + main/audiohook.c | 1429 + main/autochan.c | 104 + main/autoservice.c | 384 + main/backtrace.c | 305 + main/bridge.c | 5635 ++ main/bridge_after.c | 647 + main/bridge_basic.c | 3664 + main/bridge_channel.c | 3101 + main/bridge_roles.c | 501 + main/bucket.c | 1010 + main/buildinfo.c | 34 + main/callerid.c | 1371 + main/ccss.c | 4703 + main/cdr.c | 4632 + main/cel.c | 1759 + main/channel.c | 10957 ++ main/channel_internal_api.c | 1582 + main/chanvars.c | 148 + main/cli.c | 2882 + main/codec.c | 414 + main/codec_builtin.c | 987 + main/config.c | 4151 + main/config_options.c | 1593 + main/conversions.c | 77 + main/core_local.c | 1085 + main/core_unreal.c | 1069 + main/crypt.c | 200 + main/cygload.c | 39 + main/data_buffer.c | 368 + main/datastore.c | 166 + main/db.c | 1100 + main/devicestate.c | 983 + main/dial.c | 1350 + main/dns.c | 625 + main/dns_core.c | 666 + main/dns_naptr.c | 646 + main/dns_query_set.c | 284 + main/dns_recurring.c | 155 + main/dns_srv.c | 216 + main/dns_system_resolver.c | 265 + main/dns_test.c | 265 + main/dns_tlsa.c | 53 + main/dnsmgr.c | 527 + main/dsp.c | 2429 + main/ecdisa.h | 15 + main/endpoints.c | 498 + main/enum.c | 1027 + main/event.c | 521 + main/features.c | 1178 + main/features_config.c | 2006 + main/features_config.h | 28 + main/file.c | 1969 + main/fixedjitterbuf.c | 353 + main/fixedjitterbuf.h | 95 + main/format.c | 387 + main/format_cache.c | 549 + main/format_cap.c | 741 + main/format_compatibility.c | 271 + main/frame.c | 738 + main/framehook.c | 321 + main/fskmodem.c | 34 + main/fskmodem_float.c | 359 + main/fskmodem_int.c | 365 + main/global_datastores.c | 58 + main/hashtab.c | 833 + main/heap.c | 294 + main/http.c | 2343 + main/image.c | 217 + main/indications.c | 1164 + main/io.c | 468 + main/iostream.c | 645 + main/jitterbuf.c | 849 + main/json.c | 827 + main/libasteriskpj.c | 52 + main/libasteriskssl.c | 210 + main/libasteriskssl.exports.in | 4 + main/loader.c | 2490 + main/lock.c | 1276 + main/logger.c | 2404 + main/manager.c | 9599 ++ main/manager_bridges.c | 750 + main/manager_channels.c | 1337 + main/manager_endpoints.c | 87 + main/manager_mwi.c | 198 + main/manager_system.c | 70 + main/max_forwards.c | 165 + main/md5.c | 265 + main/media_cache.c | 713 + main/media_index.c | 619 + main/message.c | 1679 + main/mixmonitor.c | 96 + main/named_acl.c | 597 + main/named_locks.c | 123 + main/netsock2.c | 699 + main/optional_api.c | 270 + main/options.c | 477 + main/parking.c | 247 + main/pbx.c | 8968 ++ main/pbx_app.c | 517 + main/pbx_builtins.c | 1519 + main/pbx_functions.c | 738 + main/pbx_hangup_handler.c | 298 + main/pbx_ignorepat.c | 80 + main/pbx_include.c | 110 + main/pbx_private.h | 70 + main/pbx_sw.c | 104 + main/pbx_switch.c | 131 + main/pbx_timing.c | 292 + main/pbx_variables.c | 1245 + main/pickup.c | 407 + main/plc.c | 300 + main/poll.c | 305 + main/presencestate.c | 547 + main/privacy.c | 114 + main/rtp_engine.c | 3742 + main/say.c | 9492 ++ main/sched.c | 817 + main/sdp_srtp.c | 137 + main/security_events.c | 1196 + main/sem.c | 145 + main/sha1.c | 409 + main/sip_api.c | 60 + main/slinfactory.c | 220 + main/smoother.c | 224 + main/sorcery.c | 2405 + main/sounds.c | 338 + main/srv.c | 333 + main/stasis.c | 2668 + main/stasis_bridges.c | 1318 + main/stasis_cache.c | 1020 + main/stasis_cache_pattern.c | 237 + main/stasis_channels.c | 1813 + main/stasis_endpoints.c | 474 + main/stasis_message.c | 254 + main/stasis_message_router.c | 448 + main/stasis_system.c | 435 + main/stdtime/Makefile | 29 + main/stdtime/localtime.c | 2553 + main/stdtime/private.h | 358 + main/stdtime/test.c | 21 + main/stdtime/tzfile.h | 184 + main/strcompat.c | 585 + main/stream.c | 687 + main/stringfields.c | 464 + main/strings.c | 423 + main/stun.c | 527 + main/syslog.c | 176 + main/taskprocessor.c | 1061 + main/tcptls.c | 893 + main/tdd.c | 363 + main/term.c | 364 + main/test.c | 1243 + main/threadpool.c | 1437 + main/threadstorage.c | 262 + main/timing.c | 298 + main/translate.c | 1617 + main/udptl.c | 1423 + main/ulaw.c | 248 + main/uri.c | 323 + main/utils.c | 2830 + main/uuid.c | 231 + main/xml.c | 402 + main/xmldoc.c | 2994 + makeopts.in | 372 + menuselect/.gitignore | 8 + menuselect/Makefile | 135 + menuselect/README | 178 + menuselect/autoconfig.h.in | 123 + menuselect/config.guess | 1420 + menuselect/config.sub | 1794 + menuselect/configure | 6017 ++ menuselect/configure.ac | 100 + menuselect/contrib/Makefile-dummy | 16 + menuselect/contrib/menuselect-dummy | 741 + menuselect/example_menuselect-tree | 485 + menuselect/install-sh | 323 + menuselect/linkedlists.h | 372 + menuselect/make_version | 56 + menuselect/makeopts.in | 26 + menuselect/menuselect.c | 2171 + menuselect/menuselect.h | 180 + menuselect/menuselect_curses.c | 1076 + menuselect/menuselect_gtk.c | 367 + menuselect/menuselect_newt.c | 427 + menuselect/menuselect_stub.c | 39 + menuselect/missing | 360 + menuselect/strcompat.c | 243 + menuselect/test/build_tools/menuselect-deps | 52 + menuselect/test/menuselect-tree | 712 + missing | 198 + mkinstalldirs | 40 + pbx/Makefile | 26 + pbx/ael/ael-test/ael-ntest10/extensions.ael | 131 + pbx/ael/ael-test/ael-ntest12/extensions.ael | 13 + pbx/ael/ael-test/ael-ntest22/extensions.ael | 7 + pbx/ael/ael-test/ael-ntest22/qq.ael | 6 + pbx/ael/ael-test/ael-ntest22/t1/a.ael | 4 + pbx/ael/ael-test/ael-ntest22/t1/b.ael | 6 + pbx/ael/ael-test/ael-ntest22/t1/c.ael | 13 + pbx/ael/ael-test/ael-ntest22/t2/d.ael | 4 + pbx/ael/ael-test/ael-ntest22/t2/e.ael | 6 + pbx/ael/ael-test/ael-ntest22/t2/f.ael | 8 + pbx/ael/ael-test/ael-ntest22/t3/g.ael | 4 + pbx/ael/ael-test/ael-ntest22/t3/h.ael | 6 + pbx/ael/ael-test/ael-ntest22/t3/i.ael | 4 + pbx/ael/ael-test/ael-ntest22/t3/j.ael | 6 + pbx/ael/ael-test/ael-ntest23/extensions.ael | 7 + pbx/ael/ael-test/ael-ntest23/qq.ael | 6 + pbx/ael/ael-test/ael-ntest23/t1/a.ael | 4 + pbx/ael/ael-test/ael-ntest23/t1/b.ael | 6 + pbx/ael/ael-test/ael-ntest23/t1/c.ael | 13 + pbx/ael/ael-test/ael-ntest23/t2/d.ael | 4 + pbx/ael/ael-test/ael-ntest23/t2/e.ael | 6 + pbx/ael/ael-test/ael-ntest23/t2/f.ael | 8 + pbx/ael/ael-test/ael-ntest23/t3/g.ael | 4 + pbx/ael/ael-test/ael-ntest23/t3/h.ael | 6 + pbx/ael/ael-test/ael-ntest23/t3/i.ael | 4 + pbx/ael/ael-test/ael-ntest23/t3/j.ael | 6 + pbx/ael/ael-test/ael-ntest24/extensions.ael | 25 + pbx/ael/ael-test/ael-ntest9/extensions.ael | 11 + pbx/ael/ael-test/ael-test1/extensions.ael | 163 + pbx/ael/ael-test/ael-test11/extensions.ael | 57 + pbx/ael/ael-test/ael-test14/extensions.ael | 20 + pbx/ael/ael-test/ael-test15/extensions.ael | 17 + pbx/ael/ael-test/ael-test16/extensions.ael | 3 + pbx/ael/ael-test/ael-test18/extensions.ael | 39 + pbx/ael/ael-test/ael-test19/extensions.ael | 377 + pbx/ael/ael-test/ael-test2/apptest.ael2 | 146 + pbx/ael/ael-test/ael-test2/extensions.ael | 7 + pbx/ael/ael-test/ael-test20/extensions.ael | 7 + pbx/ael/ael-test/ael-test3/extensions.ael | 3182 + pbx/ael/ael-test/ael-test3/include1.ael2 | 3 + pbx/ael/ael-test/ael-test3/include2.ael2 | 4 + pbx/ael/ael-test/ael-test3/include3.ael2 | 2 + pbx/ael/ael-test/ael-test3/include4.ael2 | 2 + pbx/ael/ael-test/ael-test3/include5.ael2 | 1 + .../ael-test3/telemarket_torture.ael2 | 812 + pbx/ael/ael-test/ael-test4/apptest.ael2 | 146 + pbx/ael/ael-test/ael-test4/extensions.ael | 7 + pbx/ael/ael-test/ael-test5/extensions.ael | 838 + pbx/ael/ael-test/ael-test6/extensions.ael | 833 + pbx/ael/ael-test/ael-test7/extensions.ael | 459 + pbx/ael/ael-test/ael-test8/extensions.ael | 26 + pbx/ael/ael-test/ael-vtest13/extensions.ael | 3181 + pbx/ael/ael-test/ael-vtest13/include1.ael2 | 3 + pbx/ael/ael-test/ael-vtest13/include2.ael2 | 4 + pbx/ael/ael-test/ael-vtest13/include3.ael2 | 2 + pbx/ael/ael-test/ael-vtest13/include4.ael2 | 2 + pbx/ael/ael-test/ael-vtest13/include5.ael2 | 1 + .../ael-vtest13/telemarket_torture.ael2 | 812 + pbx/ael/ael-test/ael-vtest17/extensions.ael | 116 + pbx/ael/ael-test/ael-vtest21/extensions.ael | 13 + pbx/ael/ael-test/ael-vtest25/extensions.ael | 8 + pbx/ael/ael-test/ref.ael-ntest10 | 181 + pbx/ael/ael-test/ref.ael-ntest12 | 30 + pbx/ael/ael-test/ref.ael-ntest22 | 54 + pbx/ael/ael-test/ref.ael-ntest23 | 24 + pbx/ael/ael-test/ref.ael-ntest24 | 34 + pbx/ael/ael-test/ref.ael-ntest9 | 23 + pbx/ael/ael-test/ref.ael-test1 | 18 + pbx/ael/ael-test/ref.ael-test11 | 13 + pbx/ael/ael-test/ref.ael-test14 | 11 + pbx/ael/ael-test/ref.ael-test15 | 11 + pbx/ael/ael-test/ref.ael-test16 | 12 + pbx/ael/ael-test/ref.ael-test18 | 11 + pbx/ael/ael-test/ref.ael-test19 | 18 + pbx/ael/ael-test/ref.ael-test2 | 27 + pbx/ael/ael-test/ref.ael-test20 | 11 + pbx/ael/ael-test/ref.ael-test3 | 99 + pbx/ael/ael-test/ref.ael-test4 | 27 + pbx/ael/ael-test/ref.ael-test5 | 14 + pbx/ael/ael-test/ref.ael-test6 | 23 + pbx/ael/ael-test/ref.ael-test7 | 19 + pbx/ael/ael-test/ref.ael-test8 | 11 + pbx/ael/ael-test/ref.ael-vtest13 | 3181 + pbx/ael/ael-test/ref.ael-vtest17 | 70 + pbx/ael/ael-test/ref.ael-vtest21 | 9 + pbx/ael/ael-test/ref.ael-vtest25 | 7 + pbx/ael/ael-test/runtests | 56 + pbx/ael/ael-test/setref | 7 + pbx/dundi-parser.c | 812 + pbx/dundi-parser.h | 85 + pbx/pbx_ael.c | 370 + pbx/pbx_config.c | 2164 + pbx/pbx_dundi.c | 5192 + pbx/pbx_loopback.c | 191 + pbx/pbx_lua.c | 1700 + pbx/pbx_realtime.c | 419 + pbx/pbx_spool.c | 965 + phoneprov/000000000000-directory.xml | 6 + phoneprov/000000000000-phone.cfg | 1 + phoneprov/000000000000.cfg | 2 + phoneprov/polycom.xml | 37 + phoneprov/polycom_line.xml | 1 + phoneprov/snom-mac.xml | 24 + res/Makefile | 76 + res/ael/.gitignore | 1 + res/ael/ael.flex | 921 + res/ael/ael.tab.c | 4007 + res/ael/ael.tab.h | 120 + res/ael/ael.y | 889 + res/ael/ael_lex.c | 3494 + res/ael/pval.c | 5942 ++ res/ari.make | 30 + res/ari/ari_model_validators.c | 6633 ++ res/ari/ari_model_validators.h | 1836 + res/ari/ari_websockets.c | 207 + res/ari/cli.c | 440 + res/ari/config.c | 387 + res/ari/internal.h | 167 + res/ari/resource_applications.c | 170 + res/ari/resource_applications.h | 131 + res/ari/resource_asterisk.c | 830 + res/ari/resource_asterisk.h | 322 + res/ari/resource_bridges.c | 1074 + res/ari/resource_bridges.h | 397 + res/ari/resource_channels.c | 1973 + res/ari/resource_channels.h | 785 + res/ari/resource_device_states.c | 113 + res/ari/resource_device_states.h | 106 + res/ari/resource_endpoints.c | 308 + res/ari/resource_endpoints.h | 142 + res/ari/resource_events.c | 579 + res/ari/resource_events.h | 128 + res/ari/resource_mailboxes.c | 95 + res/ari/resource_mailboxes.h | 108 + res/ari/resource_playbacks.c | 141 + res/ari/resource_playbacks.h | 95 + res/ari/resource_recordings.c | 359 + res/ari/resource_recordings.h | 215 + res/ari/resource_sounds.c | 235 + res/ari/resource_sounds.h | 82 + res/parking/parking_applications.c | 1011 + res/parking/parking_bridge.c | 461 + res/parking/parking_bridge_features.c | 815 + res/parking/parking_controller.c | 298 + res/parking/parking_devicestate.c | 124 + res/parking/parking_manager.c | 716 + res/parking/parking_tests.c | 866 + res/parking/parking_ui.c | 206 + res/parking/res_parking.h | 576 + res/res.xml | 14 + res/res_adsi.c | 1216 + res/res_ael_share.c | 57 + res/res_ael_share.exports.in | 4 + res/res_agi.c | 4709 + res/res_agi.exports.in | 10 + res/res_ari.c | 1201 + res/res_ari.exports.in | 6 + res/res_ari_applications.c | 518 + res/res_ari_asterisk.c | 1298 + res/res_ari_bridges.c | 1581 + res/res_ari_channels.c | 2873 + res/res_ari_device_states.c | 350 + res/res_ari_endpoints.c | 473 + res/res_ari_events.c | 471 + res/res_ari_mailboxes.c | 356 + res/res_ari_model.c | 209 + res/res_ari_model.exports.in | 6 + res/res_ari_playbacks.c | 308 + res/res_ari_recordings.c | 892 + res/res_ari_sounds.c | 237 + res/res_calendar.c | 1946 + res/res_calendar.exports.in | 7 + res/res_calendar_caldav.c | 757 + res/res_calendar_ews.c | 945 + res/res_calendar_exchange.c | 748 + res/res_calendar_icalendar.c | 546 + res/res_chan_stats.c | 186 + res/res_clialiases.c | 303 + res/res_clioriginate.c | 249 + res/res_config_curl.c | 654 + res/res_config_ldap.c | 2005 + res/res_config_odbc.c | 1248 + res/res_config_pgsql.c | 1724 + res/res_config_sqlite.c | 1787 + res/res_config_sqlite3.c | 1401 + res/res_convert.c | 159 + res/res_corosync.c | 1206 + res/res_crypto.c | 677 + res/res_crypto.exports.in | 17 + res/res_curl.c | 73 + res/res_endpoint_stats.c | 155 + res/res_fax.c | 4799 + res/res_fax.exports.in | 13 + res/res_fax_spandsp.c | 1270 + res/res_format_attr_celt.c | 204 + res/res_format_attr_g729.c | 74 + res/res_format_attr_h263.c | 276 + res/res_format_attr_h264.c | 337 + res/res_format_attr_ilbc.c | 172 + res/res_format_attr_opus.c | 408 + res/res_format_attr_silk.c | 256 + res/res_format_attr_siren14.c | 92 + res/res_format_attr_siren7.c | 92 + res/res_format_attr_vp8.c | 226 + res/res_hep.c | 703 + res/res_hep.exports.in | 9 + res/res_hep_pjsip.c | 255 + res/res_hep_rtcp.c | 191 + res/res_http_media_cache.c | 446 + res/res_http_post.c | 517 + res/res_http_websocket.c | 1484 + res/res_http_websocket.exports.in | 7 + res/res_limit.c | 215 + res/res_manager_devicestate.c | 150 + res/res_manager_presencestate.c | 149 + res/res_monitor.c | 1015 + res/res_monitor.exports.in | 11 + res/res_musiconhold.c | 2085 + res/res_mutestream.c | 238 + res/res_mwi_external.c | 956 + res/res_mwi_external.exports.in | 6 + res/res_mwi_external_ami.c | 370 + res/res_odbc.c | 1020 + res/res_odbc.exports.in | 7 + res/res_odbc_transaction.c | 529 + res/res_odbc_transaction.exports.in | 6 + res/res_parking.c | 1299 + res/res_phoneprov.c | 1710 + res/res_phoneprov.exports.in | 6 + res/res_pjproject.c | 770 + res/res_pjproject.exports.in | 6 + res/res_pjsip.c | 5362 + res/res_pjsip.exports.in | 10 + res/res_pjsip/config_auth.c | 411 + res/res_pjsip/config_domain_aliases.c | 88 + res/res_pjsip/config_global.c | 655 + res/res_pjsip/config_system.c | 311 + res/res_pjsip/config_transport.c | 1475 + res/res_pjsip/include/res_pjsip_private.h | 411 + res/res_pjsip/location.c | 1451 + res/res_pjsip/pjsip_cli.c | 379 + res/res_pjsip/pjsip_configuration.c | 2178 + res/res_pjsip/pjsip_distributor.c | 1350 + res/res_pjsip/pjsip_global_headers.c | 187 + res/res_pjsip/pjsip_message_filter.c | 545 + res/res_pjsip/pjsip_options.c | 2986 + res/res_pjsip/pjsip_resolver.c | 718 + res/res_pjsip/pjsip_scheduler.c | 606 + res/res_pjsip/pjsip_session.c | 166 + res/res_pjsip/pjsip_transport_events.c | 404 + res/res_pjsip/pjsip_transport_management.c | 432 + res/res_pjsip/presence_xml.c | 185 + res/res_pjsip/security_events.c | 284 + res/res_pjsip_acl.c | 323 + res/res_pjsip_authenticator_digest.c | 556 + res/res_pjsip_caller_id.c | 798 + res/res_pjsip_config_wizard.c | 1349 + res/res_pjsip_dialog_info_body_generator.c | 220 + res/res_pjsip_diversion.c | 430 + res/res_pjsip_dlg_options.c | 103 + res/res_pjsip_dtmf_info.c | 179 + res/res_pjsip_empty_info.c | 85 + res/res_pjsip_endpoint_identifier_anonymous.c | 144 + res/res_pjsip_endpoint_identifier_ip.c | 862 + res/res_pjsip_endpoint_identifier_user.c | 227 + res/res_pjsip_exten_state.c | 1012 + res/res_pjsip_exten_state.exports.in | 7 + res/res_pjsip_header_funcs.c | 624 + res/res_pjsip_history.c | 1407 + res/res_pjsip_logger.c | 241 + res/res_pjsip_messaging.c | 939 + res/res_pjsip_mwi.c | 1407 + res/res_pjsip_mwi_body_generator.c | 118 + res/res_pjsip_nat.c | 436 + res/res_pjsip_notify.c | 1242 + res/res_pjsip_one_touch_record_info.c | 127 + res/res_pjsip_outbound_authenticator_digest.c | 226 + res/res_pjsip_outbound_publish.c | 1705 + res/res_pjsip_outbound_publish.exports.in | 6 + res/res_pjsip_outbound_registration.c | 2305 + res/res_pjsip_path.c | 260 + res/res_pjsip_phoneprov_provider.c | 420 + res/res_pjsip_pidf_body_generator.c | 137 + res/res_pjsip_pidf_digium_body_supplement.c | 116 + res/res_pjsip_pidf_eyebeam_body_supplement.c | 113 + res/res_pjsip_publish_asterisk.c | 942 + res/res_pjsip_pubsub.c | 5630 ++ res/res_pjsip_pubsub.exports.in | 6 + res/res_pjsip_refer.c | 1257 + res/res_pjsip_registrar.c | 1345 + res/res_pjsip_rfc3326.c | 167 + res/res_pjsip_sdp_rtp.c | 2195 + res/res_pjsip_send_to_voicemail.c | 235 + res/res_pjsip_session.c | 4335 + res/res_pjsip_session.exports.in | 9 + res/res_pjsip_sips_contact.c | 106 + res/res_pjsip_t38.c | 1083 + res/res_pjsip_transport_websocket.c | 535 + res/res_pjsip_xpidf_body_generator.c | 178 + res/res_pktccops.c | 1516 + res/res_pktccops.exports.in | 6 + res/res_realtime.c | 270 + res/res_remb_modifier.c | 225 + res/res_resolver_unbound.c | 1474 + res/res_rtp_asterisk.c | 8326 ++ res/res_rtp_multicast.c | 567 + res/res_rtp_multicast.exports.in | 6 + res/res_security_log.c | 165 + res/res_smdi.c | 1451 + res/res_smdi.exports.in | 18 + res/res_snmp.c | 140 + res/res_sorcery_astdb.c | 434 + res/res_sorcery_config.c | 545 + res/res_sorcery_memory.c | 282 + res/res_sorcery_memory_cache.c | 3592 + res/res_sorcery_realtime.c | 382 + res/res_speech.c | 367 + res/res_speech.exports.in | 6 + res/res_srtp.c | 1247 + res/res_srtp.exports.in | 4 + res/res_stasis.c | 2204 + res/res_stasis.exports.in | 6 + res/res_stasis_answer.c | 77 + res/res_stasis_answer.exports.in | 6 + res/res_stasis_device_state.c | 490 + res/res_stasis_device_state.exports.in | 6 + res/res_stasis_mailbox.c | 159 + res/res_stasis_mailbox.exports.in | 6 + res/res_stasis_playback.c | 763 + res/res_stasis_playback.exports.in | 6 + res/res_stasis_recording.c | 660 + res/res_stasis_recording.exports.in | 6 + res/res_stasis_snoop.c | 449 + res/res_stasis_snoop.exports.in | 6 + res/res_stasis_test.c | 273 + res/res_stasis_test.exports.in | 6 + res/res_statsd.c | 414 + res/res_statsd.exports.in | 6 + res/res_stun_monitor.c | 486 + res/res_timing_dahdi.c | 240 + res/res_timing_kqueue.c | 508 + res/res_timing_pthread.c | 476 + res/res_timing_timerfd.c | 280 + res/res_xmpp.c | 4789 + res/res_xmpp.exports.in | 17 + res/snmp/agent.c | 914 + res/snmp/agent.h | 40 + res/srtp/srtp_compat.h | 49 + res/stasis/app.c | 1645 + res/stasis/app.h | 284 + res/stasis/command.c | 169 + res/stasis/command.h | 76 + res/stasis/control.c | 1592 + res/stasis/control.h | 138 + res/stasis/messaging.c | 546 + res/stasis/messaging.h | 83 + res/stasis/stasis_bridge.c | 319 + res/stasis/stasis_bridge.h | 74 + res/stasis_recording/stored.c | 461 + rest-api-templates/README.txt | 15 + rest-api-templates/api.wiki.mustache | 77 + rest-api-templates/ari.make.mustache | 23 + .../ari_model_validators.c.mustache | 120 + .../ari_model_validators.h.mustache | 190 + rest-api-templates/ari_resource.c.mustache | 51 + rest-api-templates/ari_resource.h.mustache | 161 + rest-api-templates/asterisk_processor.py | 252 + rest-api-templates/body_parsing.mustache | 71 + rest-api-templates/do-not-edit.mustache | 4 + rest-api-templates/make_ari_stubs.py | 96 + rest-api-templates/models.wiki.mustache | 22 + rest-api-templates/odict.py | 261 + rest-api-templates/param_cleanup.mustache | 26 + rest-api-templates/param_parsing.mustache | 98 + .../res_ari_resource.c.mustache | 323 + rest-api-templates/rest_handler.mustache | 40 + rest-api-templates/swagger_model.py | 765 + rest-api-templates/transform.py | 66 + rest-api/README.txt | 9 + rest-api/api-docs/applications.json | 172 + rest-api/api-docs/asterisk.json | 725 + rest-api/api-docs/bridges.json | 760 + rest-api/api-docs/channels.json | 1787 + rest-api/api-docs/deviceStates.json | 154 + rest-api/api-docs/endpoints.json | 279 + rest-api/api-docs/events.json | 898 + rest-api/api-docs/mailboxes.json | 137 + rest-api/api-docs/playbacks.json | 164 + rest-api/api-docs/recordings.json | 413 + rest-api/api-docs/sounds.json | 99 + rest-api/resources.json | 54 + sample.call | 83 + sounds/Makefile | 186 + sounds/sounds.xml | 386 + static-http/ajamdemo.html | 236 + static-http/astman.css | 52 + static-http/astman.js | 262 + static-http/mantest.html | 193 + static-http/prototype.js | 3286 + tests/CI/buildAsterisk.sh | 212 + tests/CI/ci.functions | 30 + tests/CI/gateTestGroups.json | 56 + tests/CI/gates.jenkinsfile | 278 + tests/CI/installAsterisk.sh | 33 + tests/CI/periodic-dailyTestGroups.json | 44 + tests/CI/periodics-daily.jenkinsfile | 168 + tests/CI/processCoverage.sh | 45 + tests/CI/publishAsteriskDocs.sh | 144 + tests/CI/ref_debug.jenkinsfile | 143 + tests/CI/ref_debugTestGroups.json | 32 + tests/CI/runTestsuite.sh | 35 + tests/CI/runUnittests.sh | 139 + tests/CI/setupJenkinsEnvironment.sh | 7 + tests/CI/setupRealtime.sh | 179 + tests/CI/teardownRealtime.sh | 12 + tests/CI/unittests.jenkinsfile | 231 + tests/Makefile | 24 + tests/test_abstract_jb.c | 548 + tests/test_acl.c | 450 + tests/test_ami_security_events.sh | 46 + tests/test_amihooks.c | 218 + tests/test_aoc.c | 689 + tests/test_app.c | 238 + tests/test_ari.c | 578 + tests/test_ari_model.c | 460 + tests/test_ast_format_str_reduce.c | 135 + tests/test_astobj2.c | 2074 + tests/test_astobj2_thrash.c | 359 + tests/test_astobj2_weaken.c | 437 + tests/test_bridging.c | 290 + tests/test_bucket.c | 1041 + tests/test_callerid.c | 167 + tests/test_cdr.c | 2628 + tests/test_cel.c | 2232 + tests/test_channel.c | 119 + tests/test_channel_feature_hooks.c | 358 + tests/test_config.c | 1926 + tests/test_conversions.c | 136 + tests/test_core_codec.c | 367 + tests/test_core_format.c | 1081 + tests/test_data_buffer.c | 345 + tests/test_db.c | 309 + tests/test_devicestate.c | 969 + tests/test_dlinklists.c | 364 + tests/test_dns.c | 1337 + tests/test_dns_naptr.c | 502 + tests/test_dns_query_set.c | 392 + tests/test_dns_recurring.c | 647 + tests/test_dns_srv.c | 589 + tests/test_endpoints.c | 157 + tests/test_event.c | 208 + tests/test_expr.c | 190 + tests/test_file.c | 195 + tests/test_format_cache.c | 279 + tests/test_format_cap.c | 1477 + tests/test_func_file.c | 399 + tests/test_gosub.c | 176 + tests/test_hashtab_thrash.c | 333 + tests/test_heap.c | 306 + tests/test_http_media_cache.c | 700 + tests/test_jitterbuf.c | 1282 + tests/test_json.c | 1822 + tests/test_linkedlists.c | 661 + tests/test_locale.c | 182 + tests/test_logger.c | 275 + tests/test_media_cache.c | 413 + tests/test_message.c | 881 + tests/test_named_lock.c | 151 + tests/test_netsock2.c | 198 + tests/test_optional_api.c | 187 + tests/test_pbx.c | 404 + tests/test_poll.c | 246 + tests/test_res_pjsip_scheduler.c | 431 + tests/test_res_stasis.c | 198 + tests/test_sched.c | 357 + tests/test_scoped_lock.c | 283 + tests/test_security_events.c | 704 + tests/test_skel.c | 81 + tests/test_sorcery.c | 3669 + tests/test_sorcery_astdb.c | 636 + tests/test_sorcery_memory_cache_thrash.c | 631 + tests/test_sorcery_realtime.c | 937 + tests/test_stasis.c | 2504 + tests/test_stasis_channels.c | 333 + tests/test_stasis_endpoints.c | 311 + tests/test_stream.c | 2314 + tests/test_stringfields.c | 530 + tests/test_strings.c | 610 + tests/test_substitution.c | 350 + tests/test_taskprocessor.c | 768 + tests/test_threadpool.c | 1843 + tests/test_time.c | 126 + tests/test_uri.c | 152 + tests/test_utils.c | 655 + tests/test_uuid.c | 152 + tests/test_vector.c | 536 + tests/test_voicemail_api.c | 1579 + tests/test_websocket_client.c | 165 + tests/test_xml_escape.c | 116 + third-party/Makefile | 20 + third-party/Makefile.rules | 57 + third-party/apply_patches | 33 + third-party/configure.m4 | 10 + third-party/jansson/.gitignore | 4 + third-party/jansson/Makefile | 98 + third-party/jansson/Makefile.rules | 16 + third-party/jansson/configure.m4 | 109 + third-party/jansson/jansson-2.12.tar.bz2.md5 | 1 + third-party/jansson/patches/README | 10 + third-party/pjproject/.gitignore | 5 + third-party/pjproject/Makefile | 215 + third-party/pjproject/Makefile.rules | 48 + third-party/pjproject/configure.m4 | 123 + .../0000-configure-ssl-library-path.patch | 47 + .../patches/0000-remove-third-party.patch | 131 + .../0000-set_apps_initial_log_level.patch | 53 + .../pjproject/patches/0000-solaris.patch | 135 + ...utgoing_connected_line_method_update.patch | 33 + ...-double-reference-counter-decrements.patch | 42 + third-party/pjproject/patches/README | 7 + .../pjproject/patches/asterisk_malloc_debug.c | 70 + .../pjproject/patches/asterisk_malloc_debug.h | 88 + third-party/pjproject/patches/config_site.h | 89 + third-party/pjproject/patches/user.mak | 4 + .../pjproject/pjproject-2.8.tar.bz2.md5 | 2 + third-party/versions.mak | 2 + utils/.gitignore | 27 + utils/Makefile | 218 + utils/ael_main.c | 631 + utils/astcanary.c | 134 + utils/astdb2bdb.c | 134 + utils/astdb2sqlite3.c | 233 + utils/astman.1 | 102 + utils/astman.c | 765 + utils/check_expr.c | 437 + utils/clicompat.c | 33 + utils/conf2ael.c | 729 + utils/conf_bridge_binaural_hrir_importer.c | 147 + utils/conf_bridge_binaural_hrir_importer.h | 46 + utils/db1-ast/Makefile | 71 + utils/db1-ast/btree/bt_close.c | 182 + utils/db1-ast/btree/bt_conv.c | 221 + utils/db1-ast/btree/bt_debug.c | 329 + utils/db1-ast/btree/bt_delete.c | 657 + utils/db1-ast/btree/bt_get.c | 105 + utils/db1-ast/btree/bt_open.c | 458 + utils/db1-ast/btree/bt_overflow.c | 228 + utils/db1-ast/btree/bt_page.c | 100 + utils/db1-ast/btree/bt_put.c | 321 + utils/db1-ast/btree/bt_search.c | 213 + utils/db1-ast/btree/bt_seq.c | 460 + utils/db1-ast/btree/bt_split.c | 829 + utils/db1-ast/btree/bt_utils.c | 260 + utils/db1-ast/btree/btree.h | 391 + utils/db1-ast/btree/extern.h | 70 + utils/db1-ast/db/db.c | 103 + utils/db1-ast/hash/README | 72 + utils/db1-ast/hash/extern.h | 65 + utils/db1-ast/hash/hash.c | 999 + utils/db1-ast/hash/hash.h | 293 + utils/db1-ast/hash/hash_bigkey.c | 668 + utils/db1-ast/hash/hash_buf.c | 355 + utils/db1-ast/hash/hash_func.c | 225 + utils/db1-ast/hash/hash_log2.c | 56 + utils/db1-ast/hash/hash_page.c | 946 + utils/db1-ast/hash/hsearch.c | 107 + utils/db1-ast/hash/ndbm.c | 235 + utils/db1-ast/hash/page.h | 92 + utils/db1-ast/hash/search.h | 51 + utils/db1-ast/include/circ-queue.h | 131 + utils/db1-ast/include/compat.h | 49 + utils/db1-ast/include/db.h | 250 + utils/db1-ast/include/mpool.h | 115 + utils/db1-ast/include/ndbm.h | 79 + utils/db1-ast/libdb.map | 11 + utils/db1-ast/mpool/README | 7 + utils/db1-ast/mpool/mpool.c | 498 + utils/db1-ast/recno/extern.h | 54 + utils/db1-ast/recno/rec_close.c | 183 + utils/db1-ast/recno/rec_delete.c | 197 + utils/db1-ast/recno/rec_get.c | 311 + utils/db1-ast/recno/rec_open.c | 241 + utils/db1-ast/recno/rec_put.c | 280 + utils/db1-ast/recno/rec_search.c | 126 + utils/db1-ast/recno/rec_seq.c | 131 + utils/db1-ast/recno/rec_utils.c | 122 + utils/db1-ast/recno/recno.h | 39 + utils/expr2.testinput | 134 + utils/extconf.c | 5677 ++ utils/frame.c | 1090 + utils/frame.h | 300 + utils/muted.c | 770 + utils/smsq.c | 773 + utils/stereorize.c | 166 + utils/streamplayer.c | 128 + utils/utils.xml | 60 + 1950 files changed, 1382042 insertions(+) create mode 100644 .cleancount create mode 100644 .gitignore create mode 100644 .gitreview create mode 100644 .lastclean create mode 100644 .version create mode 100644 BSDmakefile create mode 100644 BUGS create mode 100644 CHANGES create mode 100644 COPYING create mode 100644 CREDITS create mode 100644 ChangeLog create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 Makefile.moddir_rules create mode 100644 Makefile.rules create mode 100644 README-SERIOUSLY.bestpractices.md create mode 100644 README-addons.txt create mode 100644 README.md create mode 100644 UPGRADE-1.2.txt create mode 100644 UPGRADE-1.4.txt create mode 100644 UPGRADE-1.6.txt create mode 100644 UPGRADE-1.8.txt create mode 100644 UPGRADE-10.txt create mode 100644 UPGRADE-11.txt create mode 100644 UPGRADE-12.txt create mode 100644 UPGRADE-13.txt create mode 100644 UPGRADE-14.txt create mode 100644 UPGRADE-15.txt create mode 100644 UPGRADE.txt create mode 100644 Zaptel-to-DAHDI.txt create mode 100644 addons/.gitignore create mode 100644 addons/Makefile create mode 100644 addons/app_mysql.c create mode 100644 addons/cdr_mysql.c create mode 100644 addons/chan_mobile.c create mode 100644 addons/chan_ooh323.c create mode 100644 addons/chan_ooh323.h create mode 100644 addons/format_mp3.c create mode 100644 addons/ooh323c/COPYING create mode 100644 addons/ooh323c/README create mode 100644 addons/ooh323c/src/Makefile.in create mode 100644 addons/ooh323c/src/context.c create mode 100644 addons/ooh323c/src/decode.c create mode 100644 addons/ooh323c/src/dlist.c create mode 100644 addons/ooh323c/src/dlist.h create mode 100644 addons/ooh323c/src/encode.c create mode 100644 addons/ooh323c/src/errmgmt.c create mode 100644 addons/ooh323c/src/eventHandler.c create mode 100644 addons/ooh323c/src/eventHandler.h create mode 100644 addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h create mode 100644 addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c create mode 100644 addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c create mode 100644 addons/ooh323c/src/h323/H323-MESSAGES.c create mode 100644 addons/ooh323c/src/h323/H323-MESSAGES.h create mode 100644 addons/ooh323c/src/h323/H323-MESSAGESDec.c create mode 100644 addons/ooh323c/src/h323/H323-MESSAGESEnc.c create mode 100644 addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.c create mode 100644 addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.h create mode 100644 addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLDec.c create mode 100644 addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c create mode 100644 addons/ooh323c/src/memheap.c create mode 100644 addons/ooh323c/src/memheap.h create mode 100644 addons/ooh323c/src/ooCalls.c create mode 100644 addons/ooh323c/src/ooCalls.h create mode 100644 addons/ooh323c/src/ooCapability.c create mode 100644 addons/ooh323c/src/ooCapability.h create mode 100644 addons/ooh323c/src/ooCmdChannel.c create mode 100644 addons/ooh323c/src/ooCmdChannel.h create mode 100644 addons/ooh323c/src/ooCommon.h create mode 100644 addons/ooh323c/src/ooDateTime.c create mode 100644 addons/ooh323c/src/ooDateTime.h create mode 100644 addons/ooh323c/src/ooGkClient.c create mode 100644 addons/ooh323c/src/ooGkClient.h create mode 100644 addons/ooh323c/src/ooLogChan.c create mode 100644 addons/ooh323c/src/ooLogChan.h create mode 100644 addons/ooh323c/src/ooSocket.c create mode 100644 addons/ooh323c/src/ooSocket.h create mode 100644 addons/ooh323c/src/ooStackCmds.c create mode 100644 addons/ooh323c/src/ooStackCmds.h create mode 100644 addons/ooh323c/src/ooTimer.c create mode 100644 addons/ooh323c/src/ooTimer.h create mode 100644 addons/ooh323c/src/ooUtils.c create mode 100644 addons/ooh323c/src/ooUtils.h create mode 100644 addons/ooh323c/src/ooasn1.h create mode 100644 addons/ooh323c/src/oochannels.c create mode 100644 addons/ooh323c/src/oochannels.h create mode 100644 addons/ooh323c/src/ooh245.c create mode 100644 addons/ooh323c/src/ooh245.h create mode 100644 addons/ooh323c/src/ooh323.c create mode 100644 addons/ooh323c/src/ooh323.h create mode 100644 addons/ooh323c/src/ooh323ep.c create mode 100644 addons/ooh323c/src/ooh323ep.h create mode 100644 addons/ooh323c/src/oohdr.h create mode 100644 addons/ooh323c/src/ooper.h create mode 100644 addons/ooh323c/src/ooports.c create mode 100644 addons/ooh323c/src/ooports.h create mode 100644 addons/ooh323c/src/ooq931.c create mode 100644 addons/ooh323c/src/ooq931.h create mode 100644 addons/ooh323c/src/ootrace.c create mode 100644 addons/ooh323c/src/ootrace.h create mode 100644 addons/ooh323c/src/ootypes.h create mode 100644 addons/ooh323c/src/perutil.c create mode 100644 addons/ooh323c/src/printHandler.c create mode 100644 addons/ooh323c/src/printHandler.h create mode 100644 addons/ooh323c/src/rtctype.c create mode 100644 addons/ooh323c/src/rtctype.h create mode 100644 addons/ooh323cDriver.c create mode 100644 addons/ooh323cDriver.h create mode 100644 addons/res_config_mysql.c create mode 100644 agi/.gitignore create mode 100644 agi/DialAnMp3.agi create mode 100644 agi/Makefile create mode 100644 agi/agi-test.agi create mode 100644 agi/agi.xml create mode 100644 agi/eagi-sphinx-test.c create mode 100644 agi/eagi-test.c create mode 100644 agi/fastagi-test create mode 100755 agi/jukebox.agi create mode 100644 agi/numeralize create mode 100644 apps/Makefile create mode 100644 apps/app_adsiprog.c create mode 100644 apps/app_agent_pool.c create mode 100644 apps/app_alarmreceiver.c create mode 100644 apps/app_amd.c create mode 100644 apps/app_authenticate.c create mode 100644 apps/app_bridgeaddchan.c create mode 100644 apps/app_bridgewait.c create mode 100644 apps/app_cdr.c create mode 100644 apps/app_celgenuserevent.c create mode 100644 apps/app_chanisavail.c create mode 100644 apps/app_channelredirect.c create mode 100644 apps/app_chanspy.c create mode 100644 apps/app_confbridge.c create mode 100644 apps/app_controlplayback.c create mode 100644 apps/app_dahdiras.c create mode 100644 apps/app_db.c create mode 100644 apps/app_dial.c create mode 100644 apps/app_dictate.c create mode 100644 apps/app_directed_pickup.c create mode 100644 apps/app_directory.c create mode 100644 apps/app_disa.c create mode 100644 apps/app_dumpchan.c create mode 100644 apps/app_echo.c create mode 100644 apps/app_exec.c create mode 100644 apps/app_externalivr.c create mode 100644 apps/app_fax.c create mode 100644 apps/app_festival.c create mode 100644 apps/app_flash.c create mode 100644 apps/app_followme.c create mode 100644 apps/app_forkcdr.c create mode 100644 apps/app_getcpeid.c create mode 100644 apps/app_ices.c create mode 100644 apps/app_image.c create mode 100644 apps/app_ivrdemo.c create mode 100644 apps/app_jack.c create mode 100644 apps/app_macro.c create mode 100644 apps/app_meetme.c create mode 100644 apps/app_milliwatt.c create mode 100644 apps/app_minivm.c create mode 100644 apps/app_mixmonitor.c create mode 100644 apps/app_morsecode.c create mode 100644 apps/app_mp3.c create mode 100644 apps/app_nbscat.c create mode 100644 apps/app_originate.c create mode 100644 apps/app_osplookup.c create mode 100644 apps/app_page.c create mode 100644 apps/app_playback.c create mode 100644 apps/app_playtones.c create mode 100644 apps/app_privacy.c create mode 100644 apps/app_queue.c create mode 100644 apps/app_read.c create mode 100644 apps/app_readexten.c create mode 100644 apps/app_record.c create mode 100644 apps/app_saycounted.c create mode 100644 apps/app_sayunixtime.c create mode 100644 apps/app_senddtmf.c create mode 100644 apps/app_sendtext.c create mode 100644 apps/app_skel.c create mode 100644 apps/app_sms.c create mode 100644 apps/app_softhangup.c create mode 100644 apps/app_speech_utils.c create mode 100644 apps/app_stack.c create mode 100644 apps/app_stasis.c create mode 100644 apps/app_statsd.c create mode 100644 apps/app_stream_echo.c create mode 100644 apps/app_system.c create mode 100644 apps/app_talkdetect.c create mode 100644 apps/app_test.c create mode 100644 apps/app_transfer.c create mode 100644 apps/app_url.c create mode 100644 apps/app_userevent.c create mode 100644 apps/app_verbose.c create mode 100644 apps/app_voicemail.c create mode 100644 apps/app_voicemail.exports.in create mode 100644 apps/app_waitforring.c create mode 100644 apps/app_waitforsilence.c create mode 100644 apps/app_waituntil.c create mode 100644 apps/app_while.c create mode 100644 apps/app_zapateller.c create mode 100644 apps/confbridge/conf_chan_announce.c create mode 100644 apps/confbridge/conf_chan_record.c create mode 100644 apps/confbridge/conf_config_parser.c create mode 100644 apps/confbridge/conf_state.c create mode 100644 apps/confbridge/conf_state_empty.c create mode 100644 apps/confbridge/conf_state_inactive.c create mode 100644 apps/confbridge/conf_state_multi.c create mode 100644 apps/confbridge/conf_state_multi_marked.c create mode 100644 apps/confbridge/conf_state_single.c create mode 100644 apps/confbridge/conf_state_single_marked.c create mode 100644 apps/confbridge/confbridge_manager.c create mode 100644 apps/confbridge/include/conf_state.h create mode 100644 apps/confbridge/include/confbridge.h create mode 100644 apps/enter.h create mode 100644 apps/leave.h create mode 100644 asterisk-16.2.1-summary.html create mode 100644 asterisk-16.2.1-summary.txt create mode 100644 autoconf/ast_c_compile_check.m4 create mode 100644 autoconf/ast_c_declare_check.m4 create mode 100644 autoconf/ast_c_define_check.m4 create mode 100644 autoconf/ast_check_gnu_make.m4 create mode 100644 autoconf/ast_check_mandatory.m4 create mode 100644 autoconf/ast_check_osptk.m4 create mode 100644 autoconf/ast_check_raii.m4 create mode 100644 autoconf/ast_check_strsep_array_bounds.m4 create mode 100644 autoconf/ast_ext_lib.m4 create mode 100644 autoconf/ast_ext_tool_check.m4 create mode 100644 autoconf/ast_func_fork.m4 create mode 100644 autoconf/ast_gcc_attribute.m4 create mode 100644 autoconf/ast_pkgconfig.m4 create mode 100644 autoconf/ast_prog_egrep.m4 create mode 100644 autoconf/ast_prog_ld.m4 create mode 100644 autoconf/ast_prog_ld_gnu.m4 create mode 100644 autoconf/ast_prog_sed.m4 create mode 100644 autoconf/ax_pthread.m4 create mode 100644 autoconf/libcurl.m4 create mode 100755 bootstrap.sh create mode 100644 bridges/Makefile create mode 100644 bridges/bridge_builtin_features.c create mode 100644 bridges/bridge_builtin_interval_features.c create mode 100644 bridges/bridge_holding.c create mode 100644 bridges/bridge_native_rtp.c create mode 100644 bridges/bridge_simple.c create mode 100644 bridges/bridge_softmix.c create mode 100644 bridges/bridge_softmix/bridge_softmix_binaural.c create mode 100644 bridges/bridge_softmix/include/bridge_softmix_internal.h create mode 100644 bridges/bridge_softmix/include/hrirs.h create mode 100644 bridges/bridge_softmix/include/hrirs_configuration.h create mode 100644 bridges/bridges.xml create mode 100644 build_tools/.gitignore create mode 100644 build_tools/cflags-devmode.xml create mode 100644 build_tools/cflags.xml create mode 100755 build_tools/download_externals create mode 100755 build_tools/find_missing_support_level create mode 100644 build_tools/get_documentation create mode 100644 build_tools/get_documentation.py create mode 100644 build_tools/get_makeopts create mode 100644 build_tools/get_moduleinfo create mode 100755 build_tools/install_subst create mode 100755 build_tools/list_valid_installed_externals create mode 100755 build_tools/make_build_h create mode 100755 build_tools/make_buildopts_h create mode 100755 build_tools/make_check_alembic create mode 100755 build_tools/make_defaults_h create mode 100755 build_tools/make_linker_eo_script create mode 100755 build_tools/make_linker_version_script create mode 100755 build_tools/make_sample_voicemail create mode 100755 build_tools/make_version create mode 100755 build_tools/make_version_c create mode 100644 build_tools/menuselect-deps.in create mode 100755 build_tools/mkpkgconfig create mode 100644 build_tools/post_process_documentation.py create mode 100755 build_tools/prep_tarball create mode 100755 build_tools/sha1sum-sh create mode 100644 cdr/Makefile create mode 100644 cdr/cdr_adaptive_odbc.c create mode 100644 cdr/cdr_beanstalkd.c create mode 100644 cdr/cdr_csv.c create mode 100644 cdr/cdr_custom.c create mode 100644 cdr/cdr_manager.c create mode 100644 cdr/cdr_odbc.c create mode 100644 cdr/cdr_pgsql.c create mode 100644 cdr/cdr_radius.c create mode 100644 cdr/cdr_sqlite3_custom.c create mode 100644 cdr/cdr_syslog.c create mode 100644 cdr/cdr_tds.c create mode 100644 cel/Makefile create mode 100644 cel/cel_beanstalkd.c create mode 100644 cel/cel_custom.c create mode 100644 cel/cel_manager.c create mode 100644 cel/cel_odbc.c create mode 100644 cel/cel_pgsql.c create mode 100644 cel/cel_radius.c create mode 100644 cel/cel_sqlite3_custom.c create mode 100644 cel/cel_tds.c create mode 100644 channels/Makefile create mode 100644 channels/chan_alsa.c create mode 100644 channels/chan_bridge_media.c create mode 100644 channels/chan_console.c create mode 100644 channels/chan_dahdi.c create mode 100644 channels/chan_dahdi.h create mode 100644 channels/chan_iax2.c create mode 100644 channels/chan_mgcp.c create mode 100644 channels/chan_misdn.c create mode 100644 channels/chan_motif.c create mode 100644 channels/chan_nbs.c create mode 100644 channels/chan_oss.c create mode 100644 channels/chan_phone.c create mode 100644 channels/chan_phone.h create mode 100644 channels/chan_pjsip.c create mode 100644 channels/chan_rtp.c create mode 100644 channels/chan_sip.c create mode 100644 channels/chan_skinny.c create mode 100644 channels/chan_unistim.c create mode 100644 channels/chan_vpb.cc create mode 100644 channels/console_board.c create mode 100644 channels/console_gui.c create mode 100644 channels/console_video.c create mode 100644 channels/console_video.h create mode 100644 channels/dahdi/bridge_native_dahdi.c create mode 100644 channels/dahdi/bridge_native_dahdi.h create mode 100644 channels/iax2/codec_pref.c create mode 100644 channels/iax2/firmware.c create mode 100644 channels/iax2/format_compatibility.c create mode 100644 channels/iax2/include/astobj.h create mode 100644 channels/iax2/include/codec_pref.h create mode 100644 channels/iax2/include/firmware.h create mode 100644 channels/iax2/include/format_compatibility.h create mode 100644 channels/iax2/include/iax2.h create mode 100644 channels/iax2/include/netsock.h create mode 100644 channels/iax2/include/parser.h create mode 100644 channels/iax2/include/provision.h create mode 100644 channels/iax2/netsock.c create mode 100644 channels/iax2/parser.c create mode 100644 channels/iax2/provision.c create mode 100644 channels/misdn/Makefile create mode 100644 channels/misdn/chan_misdn_config.h create mode 100644 channels/misdn/ie.c create mode 100644 channels/misdn/isdn_lib.c create mode 100644 channels/misdn/isdn_lib.h create mode 100644 channels/misdn/isdn_lib_intern.h create mode 100644 channels/misdn/isdn_msg_parser.c create mode 100644 channels/misdn/portinfo.c create mode 100644 channels/misdn_config.c create mode 100644 channels/pjsip/cli_commands.c create mode 100644 channels/pjsip/dialplan_functions.c create mode 100644 channels/pjsip/include/chan_pjsip.h create mode 100644 channels/pjsip/include/cli_functions.h create mode 100644 channels/pjsip/include/dialplan_functions.h create mode 100644 channels/sig_analog.c create mode 100644 channels/sig_analog.h create mode 100644 channels/sig_pri.c create mode 100644 channels/sig_pri.h create mode 100644 channels/sig_ss7.c create mode 100644 channels/sig_ss7.h create mode 100644 channels/sip/config_parser.c create mode 100644 channels/sip/dialplan_functions.c create mode 100644 channels/sip/include/config_parser.h create mode 100644 channels/sip/include/dialog.h create mode 100644 channels/sip/include/dialplan_functions.h create mode 100644 channels/sip/include/globals.h create mode 100644 channels/sip/include/reqresp_parser.h create mode 100644 channels/sip/include/route.h create mode 100644 channels/sip/include/security_events.h create mode 100644 channels/sip/include/sip.h create mode 100644 channels/sip/include/sip_utils.h create mode 100644 channels/sip/reqresp_parser.c create mode 100644 channels/sip/route.c create mode 100644 channels/sip/security_events.c create mode 100644 channels/sip/utils.c create mode 100644 channels/vcodecs.c create mode 100644 channels/vgrabbers.c create mode 100644 codecs/Makefile create mode 100644 codecs/codec_a_mu.c create mode 100644 codecs/codec_adpcm.c create mode 100644 codecs/codec_alaw.c create mode 100644 codecs/codec_codec2.c create mode 100644 codecs/codec_dahdi.c create mode 100644 codecs/codec_g722.c create mode 100644 codecs/codec_g726.c create mode 100644 codecs/codec_gsm.c create mode 100644 codecs/codec_ilbc.c create mode 100644 codecs/codec_lpc10.c create mode 100644 codecs/codec_resample.c create mode 100644 codecs/codec_speex.c create mode 100644 codecs/codec_ulaw.c create mode 100644 codecs/codecs.xml create mode 100644 codecs/ex_adpcm.h create mode 100644 codecs/ex_alaw.h create mode 100644 codecs/ex_codec2.h create mode 100644 codecs/ex_g722.h create mode 100644 codecs/ex_g726.h create mode 100644 codecs/ex_gsm.h create mode 100644 codecs/ex_ilbc.h create mode 100644 codecs/ex_lpc10.h create mode 100644 codecs/ex_speex.h create mode 100644 codecs/ex_ulaw.h create mode 100644 codecs/g722/g722.h create mode 100644 codecs/g722/g722_decode.c create mode 100644 codecs/g722/g722_encode.c create mode 100644 codecs/gsm/COPYRIGHT create mode 100644 codecs/gsm/Makefile create mode 100644 codecs/gsm/README create mode 100644 codecs/gsm/inc/config.h create mode 100644 codecs/gsm/inc/gsm.h create mode 100644 codecs/gsm/inc/private.h create mode 100644 codecs/gsm/inc/proto.h create mode 100644 codecs/gsm/inc/unproto.h create mode 100644 codecs/gsm/libgsm.vcproj create mode 100644 codecs/gsm/src/add.c create mode 100644 codecs/gsm/src/code.c create mode 100644 codecs/gsm/src/debug.c create mode 100644 codecs/gsm/src/decode.c create mode 100644 codecs/gsm/src/gsm_create.c create mode 100644 codecs/gsm/src/gsm_decode.c create mode 100644 codecs/gsm/src/gsm_destroy.c create mode 100644 codecs/gsm/src/gsm_encode.c create mode 100644 codecs/gsm/src/gsm_explode.c create mode 100644 codecs/gsm/src/gsm_implode.c create mode 100644 codecs/gsm/src/gsm_option.c create mode 100644 codecs/gsm/src/gsm_print.c create mode 100644 codecs/gsm/src/k6opt.h create mode 100644 codecs/gsm/src/k6opt.s create mode 100644 codecs/gsm/src/long_term.c create mode 100644 codecs/gsm/src/lpc.c create mode 100644 codecs/gsm/src/preprocess.c create mode 100644 codecs/gsm/src/rpe.c create mode 100644 codecs/gsm/src/short_term.c create mode 100644 codecs/gsm/src/table.c create mode 100644 codecs/log2comp.h create mode 100644 codecs/lpc10/Makefile create mode 100644 codecs/lpc10/README create mode 100644 codecs/lpc10/analys.c create mode 100644 codecs/lpc10/bsynz.c create mode 100644 codecs/lpc10/chanwr.c create mode 100644 codecs/lpc10/dcbias.c create mode 100644 codecs/lpc10/decode.c create mode 100644 codecs/lpc10/deemp.c create mode 100644 codecs/lpc10/difmag.c create mode 100644 codecs/lpc10/dyptrk.c create mode 100644 codecs/lpc10/encode.c create mode 100644 codecs/lpc10/energy.c create mode 100644 codecs/lpc10/f2c.h create mode 100644 codecs/lpc10/f2clib.c create mode 100644 codecs/lpc10/ham84.c create mode 100644 codecs/lpc10/hp100.c create mode 100644 codecs/lpc10/invert.c create mode 100644 codecs/lpc10/irc2pc.c create mode 100644 codecs/lpc10/ivfilt.c create mode 100644 codecs/lpc10/liblpc10.vcproj create mode 100644 codecs/lpc10/lpc10.h create mode 100644 codecs/lpc10/lpcdec.c create mode 100644 codecs/lpc10/lpcenc.c create mode 100644 codecs/lpc10/lpcini.c create mode 100644 codecs/lpc10/lpfilt.c create mode 100644 codecs/lpc10/median.c create mode 100644 codecs/lpc10/mload.c create mode 100644 codecs/lpc10/onset.c create mode 100644 codecs/lpc10/pitsyn.c create mode 100644 codecs/lpc10/placea.c create mode 100644 codecs/lpc10/placev.c create mode 100644 codecs/lpc10/preemp.c create mode 100644 codecs/lpc10/prepro.c create mode 100644 codecs/lpc10/random.c create mode 100644 codecs/lpc10/rcchk.c create mode 100644 codecs/lpc10/synths.c create mode 100644 codecs/lpc10/tbdm.c create mode 100644 codecs/lpc10/voicin.c create mode 100644 codecs/lpc10/vparms.c create mode 100644 codecs/speex/arch.h create mode 100644 codecs/speex/fixed_generic.h create mode 100644 codecs/speex/resample.c create mode 100644 codecs/speex/resample_sse.h create mode 100644 codecs/speex/speex_resampler.h create mode 100644 codecs/speex/stack_alloc.h create mode 100755 config.guess create mode 100755 config.sub create mode 100644 configs/basic-pbx/README create mode 100644 configs/basic-pbx/asterisk.conf create mode 100644 configs/basic-pbx/cdr.conf create mode 100644 configs/basic-pbx/cdr_custom.conf create mode 100644 configs/basic-pbx/confbridge.conf create mode 100644 configs/basic-pbx/extensions.conf create mode 100644 configs/basic-pbx/indications.conf create mode 100644 configs/basic-pbx/logger.conf create mode 100644 configs/basic-pbx/modules.conf create mode 100644 configs/basic-pbx/musiconhold.conf create mode 100644 configs/basic-pbx/pjsip.conf create mode 100644 configs/basic-pbx/voicemail.conf create mode 100644 configs/samples/acl.conf.sample create mode 100644 configs/samples/adsi.conf.sample create mode 100644 configs/samples/agents.conf.sample create mode 100644 configs/samples/alarmreceiver.conf.sample create mode 100644 configs/samples/alsa.conf.sample create mode 100644 configs/samples/amd.conf.sample create mode 100644 configs/samples/app_mysql.conf.sample create mode 100644 configs/samples/app_skel.conf.sample create mode 100644 configs/samples/ari.conf.sample create mode 100644 configs/samples/ast_debug_tools.conf.sample create mode 100644 configs/samples/asterisk.adsi create mode 100644 configs/samples/asterisk.conf.sample create mode 100644 configs/samples/calendar.conf.sample create mode 100644 configs/samples/ccss.conf.sample create mode 100644 configs/samples/cdr.conf.sample create mode 100644 configs/samples/cdr_adaptive_odbc.conf.sample create mode 100644 configs/samples/cdr_beanstalkd.conf.sample create mode 100644 configs/samples/cdr_custom.conf.sample create mode 100644 configs/samples/cdr_manager.conf.sample create mode 100644 configs/samples/cdr_mysql.conf.sample create mode 100644 configs/samples/cdr_odbc.conf.sample create mode 100644 configs/samples/cdr_pgsql.conf.sample create mode 100644 configs/samples/cdr_sqlite3_custom.conf.sample create mode 100644 configs/samples/cdr_syslog.conf.sample create mode 100644 configs/samples/cdr_tds.conf.sample create mode 100644 configs/samples/cel.conf.sample create mode 100644 configs/samples/cel_beanstalkd.conf.sample create mode 100644 configs/samples/cel_custom.conf.sample create mode 100644 configs/samples/cel_odbc.conf.sample create mode 100644 configs/samples/cel_pgsql.conf.sample create mode 100644 configs/samples/cel_sqlite3_custom.conf.sample create mode 100644 configs/samples/cel_tds.conf.sample create mode 100644 configs/samples/chan_dahdi.conf.sample create mode 100644 configs/samples/chan_mobile.conf.sample create mode 100644 configs/samples/cli.conf.sample create mode 100644 configs/samples/cli_aliases.conf.sample create mode 100644 configs/samples/cli_permissions.conf.sample create mode 100644 configs/samples/codecs.conf.sample create mode 100644 configs/samples/confbridge.conf.sample create mode 100644 configs/samples/config_test.conf.sample create mode 100644 configs/samples/console.conf.sample create mode 100644 configs/samples/dbsep.conf.sample create mode 100644 configs/samples/dnsmgr.conf.sample create mode 100644 configs/samples/dsp.conf.sample create mode 100644 configs/samples/dundi.conf.sample create mode 100644 configs/samples/enum.conf.sample create mode 100644 configs/samples/extconfig.conf.sample create mode 100644 configs/samples/extensions.ael.sample create mode 100644 configs/samples/extensions.conf.sample create mode 100644 configs/samples/extensions.lua.sample create mode 100644 configs/samples/extensions_minivm.conf.sample create mode 100644 configs/samples/features.conf.sample create mode 100644 configs/samples/festival.conf.sample create mode 100644 configs/samples/followme.conf.sample create mode 100644 configs/samples/func_odbc.conf.sample create mode 100644 configs/samples/hep.conf.sample create mode 100644 configs/samples/http.conf.sample create mode 100644 configs/samples/iax.conf.sample create mode 100644 configs/samples/iaxprov.conf.sample create mode 100644 configs/samples/indications.conf.sample create mode 100644 configs/samples/logger.conf.sample create mode 100644 configs/samples/manager.conf.sample create mode 100644 configs/samples/meetme.conf.sample create mode 100644 configs/samples/mgcp.conf.sample create mode 100644 configs/samples/minivm.conf.sample create mode 100644 configs/samples/misdn.conf.sample create mode 100644 configs/samples/modules.conf.sample create mode 100644 configs/samples/motif.conf.sample create mode 100644 configs/samples/musiconhold.conf.sample create mode 100644 configs/samples/muted.conf.sample create mode 100644 configs/samples/ooh323.conf.sample create mode 100644 configs/samples/osp.conf.sample create mode 100644 configs/samples/oss.conf.sample create mode 100644 configs/samples/phone.conf.sample create mode 100644 configs/samples/phoneprov.conf.sample create mode 100644 configs/samples/pjproject.conf.sample create mode 100644 configs/samples/pjsip.conf.sample create mode 100644 configs/samples/pjsip_notify.conf.sample create mode 100644 configs/samples/pjsip_wizard.conf.sample create mode 100644 configs/samples/queuerules.conf.sample create mode 100644 configs/samples/queues.conf.sample create mode 100644 configs/samples/res_config_mysql.conf.sample create mode 100644 configs/samples/res_config_sqlite.conf.sample create mode 100644 configs/samples/res_config_sqlite3.conf.sample create mode 100644 configs/samples/res_corosync.conf.sample create mode 100644 configs/samples/res_curl.conf.sample create mode 100644 configs/samples/res_fax.conf.sample create mode 100644 configs/samples/res_ldap.conf.sample create mode 100644 configs/samples/res_odbc.conf.sample create mode 100644 configs/samples/res_parking.conf.sample create mode 100644 configs/samples/res_pgsql.conf.sample create mode 100644 configs/samples/res_pktccops.conf.sample create mode 100644 configs/samples/res_snmp.conf.sample create mode 100644 configs/samples/res_stun_monitor.conf.sample create mode 100644 configs/samples/resolver_unbound.conf.sample create mode 100644 configs/samples/rtp.conf.sample create mode 100644 configs/samples/say.conf.sample create mode 100644 configs/samples/sip.conf.sample create mode 100644 configs/samples/sip_notify.conf.sample create mode 100644 configs/samples/skinny.conf.sample create mode 100644 configs/samples/sla.conf.sample create mode 100644 configs/samples/smdi.conf.sample create mode 100644 configs/samples/sorcery.conf.sample create mode 100644 configs/samples/ss7.timers.sample create mode 100644 configs/samples/stasis.conf.sample create mode 100644 configs/samples/statsd.conf.sample create mode 100644 configs/samples/telcordia-1.adsi create mode 100644 configs/samples/test_sorcery.conf.sample create mode 100644 configs/samples/udptl.conf.sample create mode 100644 configs/samples/unistim.conf.sample create mode 100644 configs/samples/users.conf.sample create mode 100644 configs/samples/voicemail.conf.sample create mode 100644 configs/samples/vpb.conf.sample create mode 100644 configs/samples/xmpp.conf.sample create mode 100755 configure create mode 100644 configure.ac create mode 100644 contrib/Makefile create mode 100644 contrib/README.festival create mode 100644 contrib/ast-db-manage/README.md create mode 100644 contrib/ast-db-manage/cdr.ini.sample create mode 120000 contrib/ast-db-manage/cdr/env.py create mode 100644 contrib/ast-db-manage/cdr/script.py.mako create mode 100644 contrib/ast-db-manage/cdr/versions/210693f3123d_create_cdr_table.py create mode 100644 contrib/ast-db-manage/cdr/versions/54cde9847798_expand_accountcode_to_80.py create mode 100644 contrib/ast-db-manage/config.ini.sample create mode 120000 contrib/ast-db-manage/config/env.py create mode 100644 contrib/ast-db-manage/config/script.py.mako create mode 100644 contrib/ast-db-manage/config/versions/041c0d3d1857_add_dtls_auto_gen_cert.py create mode 100644 contrib/ast-db-manage/config/versions/0838f8db6a61_pjsip_add_send_contact_status_on_update_.py create mode 100644 contrib/ast-db-manage/config/versions/0be05c3a8225_add_early_media_options.py create mode 100644 contrib/ast-db-manage/config/versions/10aedae86a32_add_outgoing_enum_va.py create mode 100644 contrib/ast-db-manage/config/versions/136885b81223_add_regcontext_to_pj.py create mode 100644 contrib/ast-db-manage/config/versions/154177371065_add_default_from_user.py create mode 100644 contrib/ast-db-manage/config/versions/15b1430ad6f1_add_moh_passthrough_option_to_pjsip.py create mode 100644 contrib/ast-db-manage/config/versions/15db7b91a97a_add_rtcp_mux.py create mode 100644 contrib/ast-db-manage/config/versions/164abbd708c_add_auto_info_to_endpoint_dtmf_mode.py create mode 100644 contrib/ast-db-manage/config/versions/1758e8bbf6b_increase_useragent_column_size.py create mode 100644 contrib/ast-db-manage/config/versions/189a235b3fd7_add_keep_alive_interval.py create mode 100644 contrib/ast-db-manage/config/versions/19b00bc19b7b_add_suppress_q850_reason_headers_to_.py create mode 100644 contrib/ast-db-manage/config/versions/1ac563b350a8_add_pjsip_trust_send__connected_line.py create mode 100644 contrib/ast-db-manage/config/versions/1c688d9a003c_pjsip_voicemail_extension.py create mode 100644 contrib/ast-db-manage/config/versions/1d0e332c32af_create_rls_table.py create mode 100644 contrib/ast-db-manage/config/versions/1d3ed26d9978_increase_uri_column_size.py create mode 100644 contrib/ast-db-manage/config/versions/1d50859ed02e_create_accountcode.py create mode 100644 contrib/ast-db-manage/config/versions/20abce6d1e3c_add_pjsip_identify_by_ip.py create mode 100644 contrib/ast-db-manage/config/versions/21e526ad3040_add_pjsip_debug_option.py create mode 100644 contrib/ast-db-manage/config/versions/23530d604b96_add_rpid_immediate.py create mode 100644 contrib/ast-db-manage/config/versions/26d7f3bf0fa5_add_bind_rtp_to_media_address_to_pjsip.py create mode 100644 contrib/ast-db-manage/config/versions/26f10cadc157_add_pjsip_timeout_options.py create mode 100644 contrib/ast-db-manage/config/versions/28887f25a46f_create_queue_tables.py create mode 100644 contrib/ast-db-manage/config/versions/28ab27a7826d_add_srv_lookups_to_identify.py create mode 100644 contrib/ast-db-manage/config/versions/28b8e71e541f_add_g726_non_standard.py create mode 100644 contrib/ast-db-manage/config/versions/28ce1e718f05_add_fatal_response_interval.py create mode 100644 contrib/ast-db-manage/config/versions/2bb1a85135ad_pjsip_add_use_callerid_contact.py create mode 100644 contrib/ast-db-manage/config/versions/2d078ec071b7_increaes_contact_column_size.py create mode 100644 contrib/ast-db-manage/config/versions/2da192dbbc65_add_publish_tables.py create mode 100644 contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py create mode 100644 contrib/ast-db-manage/config/versions/31cd4f4891ec_add_auto_dtmf_mode.py create mode 100644 contrib/ast-db-manage/config/versions/339a3bdf53fc_expand_accountcode_to_80.py create mode 100644 contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py create mode 100644 contrib/ast-db-manage/config/versions/3772f8f828da_update_identify_by.py create mode 100644 contrib/ast-db-manage/config/versions/3855ee4e5f85_add_missing_pjsip_options.py create mode 100644 contrib/ast-db-manage/config/versions/39959b9c2566_pjsip_stream_maximum.py create mode 100644 contrib/ast-db-manage/config/versions/3bcc0b5bc2c9_add_allow_reload_to_ps_transports.py create mode 100644 contrib/ast-db-manage/config/versions/423f34ad36e2_fix_pjsip_qualify_ti.py create mode 100644 contrib/ast-db-manage/config/versions/43956d550a44_add_tables_for_pjsip.py create mode 100644 contrib/ast-db-manage/config/versions/4468b4a91372_add_pjsip_asymmetric_rtp_codec.py create mode 100644 contrib/ast-db-manage/config/versions/44ccced114ce_add_webrtc.py create mode 100644 contrib/ast-db-manage/config/versions/45e3f47c6c44_add_pjsip_endpoint_identifier_order.py create mode 100644 contrib/ast-db-manage/config/versions/461d7d691209_add_pjsip_qualify_timeout.py create mode 100644 contrib/ast-db-manage/config/versions/465e70e8c337_add_match_header_attribute_to_identify.py create mode 100644 contrib/ast-db-manage/config/versions/498357a710ae_add_rtp_keepalive.py create mode 100644 contrib/ast-db-manage/config/versions/4a6c67fa9b7a_add_fax_detect_timeout_option.py create mode 100644 contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py create mode 100644 contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py create mode 100644 contrib/ast-db-manage/config/versions/4e2493ef32e6_add_contact_user_to_endpoint.py create mode 100644 contrib/ast-db-manage/config/versions/5139253c0423_make_q_member_uniqueid_autoinc.py create mode 100644 contrib/ast-db-manage/config/versions/51f8cb66540e_add_further_dtls_options.py create mode 100644 contrib/ast-db-manage/config/versions/52798ad97bdf_add_pjsip_identify_by_header.py create mode 100644 contrib/ast-db-manage/config/versions/5813202e92be_add_contact_expiration_check_interval_.py create mode 100644 contrib/ast-db-manage/config/versions/581a4264e537_adding_extensions.py create mode 100644 contrib/ast-db-manage/config/versions/5950038a6ead_fix_pjsip_verifiy_typo.py create mode 100644 contrib/ast-db-manage/config/versions/65eb22eb195_add_unidentified_request_options_to_.py create mode 100644 contrib/ast-db-manage/config/versions/6d8c104e6184_res_pjsip_add_contact_via_addr_and_.py create mode 100644 contrib/ast-db-manage/config/versions/7f3e21abe318_add_preferred_codec_only_option_to_pjsip.py create mode 100644 contrib/ast-db-manage/config/versions/7f85dd44c775_fix_suppress_q850_reason_headers.py create mode 100644 contrib/ast-db-manage/config/versions/81b01a191a46_pjsip_add_contact_reg_server.py create mode 100644 contrib/ast-db-manage/config/versions/837aa67461fb_add_pjsip_endpoint_ip_access_control_.py create mode 100644 contrib/ast-db-manage/config/versions/837aa67461fb_ps_contacts_add_authenticate_qualify.py create mode 100644 contrib/ast-db-manage/config/versions/86bb1efa278d_add_ps_endpoints_refer_blind_progress.py create mode 100644 contrib/ast-db-manage/config/versions/8d478ab86e29_pjsip_add_disable_multi_domain.py create mode 100644 contrib/ast-db-manage/config/versions/8fce4c573e15_add_pjsip_allow_overlap.py create mode 100644 contrib/ast-db-manage/config/versions/945b1098bdd_add_media_encryption_optimistic_to_pjsip.py create mode 100644 contrib/ast-db-manage/config/versions/9deac0ae4717_pjsip_add_subscribe_context.py create mode 100644 contrib/ast-db-manage/config/versions/a1698e8bb9c5_add_incoming_mwi_mailbox.py create mode 100644 contrib/ast-db-manage/config/versions/a541e0b5e89_add_pjsip_max_initial_qualify_time.py create mode 100644 contrib/ast-db-manage/config/versions/a6ef36f1309_ps_globals_add_ignore_uri_user_options.py create mode 100644 contrib/ast-db-manage/config/versions/b83645976fdd_add_dtls_fingerprint_to_ps_endpoints.py create mode 100644 contrib/ast-db-manage/config/versions/c6d929b23a8_create_pjsip_subscription_persistence_.py create mode 100644 contrib/ast-db-manage/config/versions/c7a44a5a0851_pjsip_add_global_mwi_options.py create mode 100644 contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py create mode 100644 contrib/ast-db-manage/config/versions/d3e4284f8707_add_prune_on_boot_to_ps_subscription_.py create mode 100644 contrib/ast-db-manage/config/versions/d7983954dd96_add_ps_endpoints_notify_early_inuse_.py create mode 100644 contrib/ast-db-manage/config/versions/dbc44d5a908_add_missing_columns_to_sys_and_reg.py create mode 100644 contrib/ast-db-manage/config/versions/de83fac997e2_add_bundle_to_ps_endpoints.py create mode 100644 contrib/ast-db-manage/config/versions/e2f04d309071_add_wrapuptime_to_queue_members.py create mode 100644 contrib/ast-db-manage/config/versions/e96a0b8071c_increase_pjsip_column_size.py create mode 100644 contrib/ast-db-manage/config/versions/ef7efc2d3964_ps_contacts_add_endpoint_and_modify_.py create mode 100644 contrib/ast-db-manage/config/versions/f3d1c5d38b56_add_prune_on_boot.py create mode 100644 contrib/ast-db-manage/config/versions/f638dbe2eb23_symmetric_transport.py create mode 100644 contrib/ast-db-manage/config/versions/fe6592859b85_fix_mwi_subscribe_replaces_.py create mode 100644 contrib/ast-db-manage/env.py create mode 100644 contrib/ast-db-manage/voicemail.ini.sample create mode 120000 contrib/ast-db-manage/voicemail/env.py create mode 100644 contrib/ast-db-manage/voicemail/script.py.mako create mode 100644 contrib/ast-db-manage/voicemail/versions/39428242f7f5_increase_recording_column_size.py create mode 100644 contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py create mode 100644 contrib/asterisk-doxygen-header create mode 100644 contrib/asterisk-ices.xml create mode 100644 contrib/dictionary.digium create mode 100644 contrib/docker/Dockerfile.asterisk create mode 100644 contrib/docker/Dockerfile.packager create mode 100644 contrib/docker/README.md create mode 100755 contrib/docker/make-package.sh create mode 100644 contrib/editors/ael.vim create mode 100644 contrib/editors/asterisk.vim create mode 100644 contrib/editors/asteriskvm.vim create mode 100644 contrib/festival-1.4.1-diff create mode 100644 contrib/festival-1.4.2.diff create mode 100644 contrib/festival-1.4.3.diff create mode 100644 contrib/festival-1.95.diff create mode 100644 contrib/i18n.testsuite.conf create mode 100644 contrib/init.d/etc_default_asterisk create mode 100644 contrib/init.d/org.asterisk.asterisk.plist create mode 100644 contrib/init.d/org.asterisk.muted.plist create mode 100755 contrib/init.d/rc.archlinux.asterisk create mode 100755 contrib/init.d/rc.debian.asterisk create mode 100755 contrib/init.d/rc.gentoo.asterisk create mode 100755 contrib/init.d/rc.mandriva.asterisk create mode 100755 contrib/init.d/rc.mandriva.zaptel create mode 100755 contrib/init.d/rc.redhat.asterisk create mode 100755 contrib/init.d/rc.slackware.asterisk create mode 100755 contrib/init.d/rc.suse.asterisk create mode 100644 contrib/realtime/mssql/mssql_cdr.sql create mode 100644 contrib/realtime/mssql/mssql_config.sql create mode 100644 contrib/realtime/mssql/mssql_voicemail.sql create mode 100644 contrib/realtime/mysql/mysql_cdr.sql create mode 100644 contrib/realtime/mysql/mysql_config.sql create mode 100644 contrib/realtime/mysql/mysql_voicemail.sql create mode 100644 contrib/realtime/oracle/oracle_cdr.sql create mode 100644 contrib/realtime/oracle/oracle_config.sql create mode 100644 contrib/realtime/oracle/oracle_voicemail.sql create mode 100644 contrib/realtime/postgresql/postgresql_cdr.sql create mode 100644 contrib/realtime/postgresql/postgresql_config.sql create mode 100644 contrib/realtime/postgresql/postgresql_voicemail.sql create mode 100644 contrib/scripts/README.messages-expire create mode 100644 contrib/scripts/agents.php create mode 100755 contrib/scripts/ast_coredumper create mode 100644 contrib/scripts/ast_grab_core create mode 100755 contrib/scripts/ast_logescalator create mode 100755 contrib/scripts/ast_loggrabber create mode 100755 contrib/scripts/ast_tls_cert create mode 100755 contrib/scripts/astcli create mode 100644 contrib/scripts/asterisk.ldap-schema create mode 100644 contrib/scripts/asterisk.ldif create mode 100644 contrib/scripts/asterisk.logrotate create mode 100755 contrib/scripts/astgenkey create mode 100644 contrib/scripts/astgenkey.8 create mode 100755 contrib/scripts/astversion create mode 100755 contrib/scripts/autosupport create mode 100644 contrib/scripts/autosupport.8 create mode 100755 contrib/scripts/clang-scan-build create mode 100755 contrib/scripts/dahdi_span_config_hook create mode 100755 contrib/scripts/dbsep.cgi create mode 100755 contrib/scripts/file.convert.sh create mode 100755 contrib/scripts/get_ilbc_source.sh create mode 100755 contrib/scripts/get_mp3_source.sh create mode 100755 contrib/scripts/get_swagger_ui.sh create mode 100755 contrib/scripts/import-cdr-csv-mysql.pl create mode 100755 contrib/scripts/install_prereq create mode 100755 contrib/scripts/live_ast create mode 100644 contrib/scripts/loadtest.tcl create mode 100644 contrib/scripts/lookup.agi create mode 100644 contrib/scripts/managerproxy.pl create mode 100644 contrib/scripts/messages-expire.pl create mode 100644 contrib/scripts/qview.pl create mode 100755 contrib/scripts/refcounter.py create mode 100755 contrib/scripts/reflocks.py create mode 100755 contrib/scripts/refstats.py create mode 100644 contrib/scripts/retrieve_extensions_from_mysql.pl create mode 100644 contrib/scripts/retrieve_extensions_from_sql.pl create mode 100644 contrib/scripts/retrieve_sip_conf_from_mysql.pl create mode 100644 contrib/scripts/safe_asterisk create mode 100644 contrib/scripts/safe_asterisk.8 create mode 100644 contrib/scripts/safe_asterisk_restart create mode 100755 contrib/scripts/sip_nat_settings create mode 100644 contrib/scripts/sip_to_pjsip/astconfigparser.py create mode 100644 contrib/scripts/sip_to_pjsip/astdicts.py create mode 100755 contrib/scripts/sip_to_pjsip/sip_to_pjsip.py create mode 100755 contrib/scripts/sip_to_pjsip/sip_to_pjsql.py create mode 100644 contrib/scripts/sip_to_pjsip/sqlconfigparser.py create mode 100644 contrib/scripts/sipp-sendfax.xml create mode 100644 contrib/scripts/spandspflow2pcap.log create mode 100755 contrib/scripts/spandspflow2pcap.py create mode 100755 contrib/scripts/valgrind_compare create mode 100644 contrib/scripts/vmail.cgi create mode 100755 contrib/scripts/voicemailpwcheck.py create mode 100644 contrib/systemd/README.txt create mode 100644 contrib/systemd/asterisk-ami.socket create mode 100644 contrib/systemd/asterisk-amis.socket create mode 100644 contrib/systemd/asterisk-cli.socket create mode 100644 contrib/systemd/asterisk-http.socket create mode 100644 contrib/systemd/asterisk-https.socket create mode 100644 contrib/systemd/asterisk.service create mode 100644 contrib/systemd/asterisk.socket create mode 100644 contrib/thirdparty/spexxilbcfix_xlite.reg create mode 100644 contrib/thirdparty/spexxilbcfix_xpro.reg create mode 100644 contrib/unistimLang/en.po create mode 100644 contrib/unistimLang/fr.po create mode 100644 contrib/unistimLang/ru.po create mode 100644 contrib/unistimLang/ru.po.utf8 create mode 100644 contrib/upstart/asterisk.upstart-0.3.9 create mode 100644 contrib/upstart/asterisk.user.conf create mode 100644 contrib/utils/README.rawplayer create mode 100644 contrib/utils/eagi_proxy.c create mode 100644 contrib/utils/rawplayer.c create mode 100644 contrib/utils/zones2indications.c create mode 100644 contrib/valgrind-RedHat-8.0.supp create mode 100644 contrib/valgrind.supp create mode 100644 default.exports create mode 100644 doc/.gitignore create mode 100644 doc/CODING-GUIDELINES create mode 100644 doc/IAX2-security.pdf create mode 100644 doc/IAX2-security.txt create mode 100644 doc/Makefile create mode 100644 doc/README.txt create mode 100644 doc/aelparse.8 create mode 100644 doc/appdocsxml.dtd create mode 100644 doc/appdocsxml.xslt create mode 100644 doc/astdb2bdb.8 create mode 100644 doc/astdb2sqlite3.8 create mode 100644 doc/asterisk-ng-doxygen.in create mode 100644 doc/asterisk.8 create mode 100644 doc/asterisk.sgml create mode 100644 doc/lang/hebrew.ods create mode 100644 doc/lang/language-criteria.txt create mode 100644 doc/lang/urdu.ods create mode 100644 doc/lang/vietnamese.ods create mode 100644 doc/smsq.8 create mode 100644 formats/Makefile create mode 100644 formats/format_g719.c create mode 100644 formats/format_g723.c create mode 100644 formats/format_g726.c create mode 100644 formats/format_g729.c create mode 100644 formats/format_gsm.c create mode 100644 formats/format_h263.c create mode 100644 formats/format_h264.c create mode 100644 formats/format_ilbc.c create mode 100644 formats/format_ogg_speex.c create mode 100644 formats/format_ogg_vorbis.c create mode 100644 formats/format_pcm.c create mode 100644 formats/format_siren14.c create mode 100644 formats/format_siren7.c create mode 100644 formats/format_sln.c create mode 100644 formats/format_vox.c create mode 100644 formats/format_wav.c create mode 100644 formats/format_wav_gsm.c create mode 100644 formats/msgsm.h create mode 100644 funcs/Makefile create mode 100644 funcs/func_aes.c create mode 100644 funcs/func_base64.c create mode 100644 funcs/func_blacklist.c create mode 100644 funcs/func_callcompletion.c create mode 100644 funcs/func_callerid.c create mode 100644 funcs/func_cdr.c create mode 100644 funcs/func_channel.c create mode 100644 funcs/func_config.c create mode 100644 funcs/func_curl.c create mode 100644 funcs/func_cut.c create mode 100644 funcs/func_db.c create mode 100644 funcs/func_devstate.c create mode 100644 funcs/func_dialgroup.c create mode 100644 funcs/func_dialplan.c create mode 100644 funcs/func_enum.c create mode 100644 funcs/func_env.c create mode 100644 funcs/func_extstate.c create mode 100644 funcs/func_frame_trace.c create mode 100644 funcs/func_global.c create mode 100644 funcs/func_groupcount.c create mode 100644 funcs/func_hangupcause.c create mode 100644 funcs/func_holdintercept.c create mode 100644 funcs/func_iconv.c create mode 100644 funcs/func_jitterbuffer.c create mode 100644 funcs/func_lock.c create mode 100644 funcs/func_logic.c create mode 100644 funcs/func_math.c create mode 100644 funcs/func_md5.c create mode 100644 funcs/func_module.c create mode 100644 funcs/func_odbc.c create mode 100644 funcs/func_periodic_hook.c create mode 100644 funcs/func_periodic_hook.exports.in create mode 100644 funcs/func_pitchshift.c create mode 100644 funcs/func_pjsip_aor.c create mode 100644 funcs/func_pjsip_contact.c create mode 100644 funcs/func_pjsip_endpoint.c create mode 100644 funcs/func_presencestate.c create mode 100644 funcs/func_rand.c create mode 100644 funcs/func_realtime.c create mode 100644 funcs/func_sha1.c create mode 100644 funcs/func_shell.c create mode 100644 funcs/func_sorcery.c create mode 100644 funcs/func_speex.c create mode 100644 funcs/func_sprintf.c create mode 100644 funcs/func_srv.c create mode 100644 funcs/func_strings.c create mode 100644 funcs/func_sysinfo.c create mode 100644 funcs/func_talkdetect.c create mode 100644 funcs/func_timeout.c create mode 100644 funcs/func_uri.c create mode 100644 funcs/func_version.c create mode 100644 funcs/func_vmcount.c create mode 100644 funcs/func_volume.c create mode 100644 images/animlogo.gif create mode 100644 images/asterisk-intro.jpg create mode 100644 images/font.png create mode 100644 images/kpad2.jpg create mode 100644 images/play.gif create mode 100644 include/asterisk.h create mode 100644 include/asterisk/.gitignore create mode 100644 include/asterisk/_private.h create mode 100644 include/asterisk/abstract_jb.h create mode 100644 include/asterisk/acl.h create mode 100644 include/asterisk/adsi.h create mode 100644 include/asterisk/ael_structs.h create mode 100644 include/asterisk/agi.h create mode 100644 include/asterisk/alaw.h create mode 100644 include/asterisk/alertpipe.h create mode 100644 include/asterisk/aoc.h create mode 100644 include/asterisk/app.h create mode 100644 include/asterisk/ari.h create mode 100644 include/asterisk/ast_expr.h create mode 100644 include/asterisk/ast_version.h create mode 100644 include/asterisk/astdb.h create mode 100644 include/asterisk/astmm.h create mode 100644 include/asterisk/astobj2.h create mode 100644 include/asterisk/audiohook.h create mode 100644 include/asterisk/autochan.h create mode 100644 include/asterisk/autoconfig.h.in create mode 100644 include/asterisk/backtrace.h create mode 100644 include/asterisk/beep.h create mode 100644 include/asterisk/bridge.h create mode 100644 include/asterisk/bridge_after.h create mode 100644 include/asterisk/bridge_basic.h create mode 100644 include/asterisk/bridge_channel.h create mode 100644 include/asterisk/bridge_channel_internal.h create mode 100644 include/asterisk/bridge_features.h create mode 100644 include/asterisk/bridge_internal.h create mode 100644 include/asterisk/bridge_roles.h create mode 100644 include/asterisk/bridge_technology.h create mode 100644 include/asterisk/bucket.h create mode 100644 include/asterisk/buildinfo.h create mode 100644 include/asterisk/calendar.h create mode 100644 include/asterisk/callerid.h create mode 100644 include/asterisk/causes.h create mode 100644 include/asterisk/ccss.h create mode 100644 include/asterisk/cdr.h create mode 100644 include/asterisk/cel.h create mode 100644 include/asterisk/celt.h create mode 100644 include/asterisk/channel.h create mode 100644 include/asterisk/channel_internal.h create mode 100644 include/asterisk/channelstate.h create mode 100644 include/asterisk/chanvars.h create mode 100644 include/asterisk/cli.h create mode 100644 include/asterisk/codec.h create mode 100644 include/asterisk/compat.h create mode 100644 include/asterisk/compiler.h create mode 100644 include/asterisk/config.h create mode 100644 include/asterisk/config_options.h create mode 100644 include/asterisk/conversions.h create mode 100644 include/asterisk/core_local.h create mode 100644 include/asterisk/core_unreal.h create mode 100644 include/asterisk/crypto.h create mode 100644 include/asterisk/data_buffer.h create mode 100644 include/asterisk/datastore.h create mode 100644 include/asterisk/devicestate.h create mode 100644 include/asterisk/dial.h create mode 100644 include/asterisk/dlinkedlists.h create mode 100644 include/asterisk/dns.h create mode 100644 include/asterisk/dns_core.h create mode 100644 include/asterisk/dns_internal.h create mode 100644 include/asterisk/dns_naptr.h create mode 100644 include/asterisk/dns_query_set.h create mode 100644 include/asterisk/dns_recurring.h create mode 100644 include/asterisk/dns_resolver.h create mode 100644 include/asterisk/dns_srv.h create mode 100644 include/asterisk/dns_test.h create mode 100644 include/asterisk/dns_tlsa.h create mode 100644 include/asterisk/dnsmgr.h create mode 100644 include/asterisk/doxygen/architecture.h create mode 100644 include/asterisk/doxygen/licensing.h create mode 100644 include/asterisk/doxyref.h create mode 100644 include/asterisk/dsp.h create mode 100644 include/asterisk/dundi.h create mode 100644 include/asterisk/endian.h create mode 100644 include/asterisk/endpoints.h create mode 100644 include/asterisk/enum.h create mode 100644 include/asterisk/event.h create mode 100644 include/asterisk/event_defs.h create mode 100644 include/asterisk/extconf.h create mode 100644 include/asterisk/features.h create mode 100644 include/asterisk/features_config.h create mode 100644 include/asterisk/file.h create mode 100644 include/asterisk/format.h create mode 100644 include/asterisk/format_cache.h create mode 100644 include/asterisk/format_cap.h create mode 100644 include/asterisk/format_compatibility.h create mode 100644 include/asterisk/frame.h create mode 100644 include/asterisk/framehook.h create mode 100644 include/asterisk/fskmodem.h create mode 100644 include/asterisk/fskmodem_float.h create mode 100644 include/asterisk/fskmodem_int.h create mode 100644 include/asterisk/global_datastores.h create mode 100644 include/asterisk/hashtab.h create mode 100644 include/asterisk/heap.h create mode 100644 include/asterisk/http.h create mode 100644 include/asterisk/http_websocket.h create mode 100644 include/asterisk/ilbc.h create mode 100644 include/asterisk/image.h create mode 100644 include/asterisk/indications.h create mode 100644 include/asterisk/inline_api.h create mode 100644 include/asterisk/io.h create mode 100644 include/asterisk/iostream.h create mode 100644 include/asterisk/json.h create mode 100644 include/asterisk/linkedlists.h create mode 100644 include/asterisk/localtime.h create mode 100644 include/asterisk/lock.h create mode 100644 include/asterisk/logger.h create mode 100644 include/asterisk/manager.h create mode 100644 include/asterisk/max_forwards.h create mode 100644 include/asterisk/md5.h create mode 100644 include/asterisk/media_cache.h create mode 100644 include/asterisk/media_index.h create mode 100644 include/asterisk/message.h create mode 100644 include/asterisk/mixmonitor.h create mode 100644 include/asterisk/mod_format.h create mode 100644 include/asterisk/module.h create mode 100644 include/asterisk/monitor.h create mode 100644 include/asterisk/multicast_rtp.h create mode 100644 include/asterisk/musiconhold.h create mode 100644 include/asterisk/named_locks.h create mode 100644 include/asterisk/netsock2.h create mode 100644 include/asterisk/network.h create mode 100644 include/asterisk/optional_api.h create mode 100644 include/asterisk/options.h create mode 100644 include/asterisk/opus.h create mode 100644 include/asterisk/parking.h create mode 100644 include/asterisk/paths.h create mode 100644 include/asterisk/pbx.h create mode 100644 include/asterisk/phoneprov.h create mode 100644 include/asterisk/pickup.h create mode 100644 include/asterisk/pktccops.h create mode 100644 include/asterisk/plc.h create mode 100644 include/asterisk/poll-compat.h create mode 100644 include/asterisk/presencestate.h create mode 100644 include/asterisk/privacy.h create mode 100644 include/asterisk/pval.h create mode 100644 include/asterisk/res_fax.h create mode 100644 include/asterisk/res_hep.h create mode 100644 include/asterisk/res_mwi_external.h create mode 100644 include/asterisk/res_odbc.h create mode 100644 include/asterisk/res_odbc_transaction.h create mode 100644 include/asterisk/res_pjproject.h create mode 100644 include/asterisk/res_pjsip.h create mode 100644 include/asterisk/res_pjsip_body_generator_types.h create mode 100644 include/asterisk/res_pjsip_cli.h create mode 100644 include/asterisk/res_pjsip_outbound_publish.h create mode 100644 include/asterisk/res_pjsip_presence_xml.h create mode 100644 include/asterisk/res_pjsip_pubsub.h create mode 100644 include/asterisk/res_pjsip_session.h create mode 100644 include/asterisk/res_srtp.h create mode 100644 include/asterisk/rtp_engine.h create mode 100644 include/asterisk/say.h create mode 100644 include/asterisk/sched.h create mode 100644 include/asterisk/sdp_srtp.h create mode 100644 include/asterisk/security_events.h create mode 100644 include/asterisk/security_events_defs.h create mode 100644 include/asterisk/select.h create mode 100644 include/asterisk/sem.h create mode 100644 include/asterisk/sha1.h create mode 100644 include/asterisk/silk.h create mode 100644 include/asterisk/sip_api.h create mode 100644 include/asterisk/slin.h create mode 100644 include/asterisk/slinfactory.h create mode 100644 include/asterisk/smdi.h create mode 100644 include/asterisk/smoother.h create mode 100644 include/asterisk/sorcery.h create mode 100644 include/asterisk/sounds_index.h create mode 100644 include/asterisk/speech.h create mode 100644 include/asterisk/spinlock.h create mode 100644 include/asterisk/srv.h create mode 100644 include/asterisk/stasis.h create mode 100644 include/asterisk/stasis_app.h create mode 100644 include/asterisk/stasis_app_device_state.h create mode 100644 include/asterisk/stasis_app_impl.h create mode 100644 include/asterisk/stasis_app_mailbox.h create mode 100644 include/asterisk/stasis_app_playback.h create mode 100644 include/asterisk/stasis_app_recording.h create mode 100644 include/asterisk/stasis_app_snoop.h create mode 100644 include/asterisk/stasis_bridges.h create mode 100644 include/asterisk/stasis_cache_pattern.h create mode 100644 include/asterisk/stasis_channels.h create mode 100644 include/asterisk/stasis_endpoints.h create mode 100644 include/asterisk/stasis_internal.h create mode 100644 include/asterisk/stasis_message_router.h create mode 100644 include/asterisk/stasis_system.h create mode 100644 include/asterisk/stasis_test.h create mode 100644 include/asterisk/statsd.h create mode 100644 include/asterisk/stream.h create mode 100644 include/asterisk/stringfields.h create mode 100644 include/asterisk/strings.h create mode 100644 include/asterisk/stun.h create mode 100644 include/asterisk/syslog.h create mode 100644 include/asterisk/taskprocessor.h create mode 100644 include/asterisk/tcptls.h create mode 100644 include/asterisk/tdd.h create mode 100644 include/asterisk/term.h create mode 100644 include/asterisk/test.h create mode 100644 include/asterisk/threadpool.h create mode 100644 include/asterisk/threadstorage.h create mode 100644 include/asterisk/time.h create mode 100644 include/asterisk/timing.h create mode 100644 include/asterisk/transcap.h create mode 100644 include/asterisk/translate.h create mode 100644 include/asterisk/udptl.h create mode 100644 include/asterisk/ulaw.h create mode 100644 include/asterisk/unaligned.h create mode 100644 include/asterisk/uri.h create mode 100644 include/asterisk/utils.h create mode 100644 include/asterisk/uuid.h create mode 100644 include/asterisk/vector.h create mode 100644 include/asterisk/version.h create mode 100644 include/asterisk/xml.h create mode 100644 include/asterisk/xmldoc.h create mode 100644 include/asterisk/xmpp.h create mode 100644 include/jitterbuf.h create mode 100644 include/solaris-compat/compat.h create mode 100644 include/solaris-compat/sys/cdefs.h create mode 100644 include/solaris-compat/sys/queue.h create mode 100755 install-sh create mode 100644 main/.gitignore create mode 100644 main/Makefile create mode 100644 main/abstract_jb.c create mode 100644 main/acl.c create mode 100644 main/adsi.c create mode 100644 main/alaw.c create mode 100644 main/alertpipe.c create mode 100644 main/aoc.c create mode 100644 main/app.c create mode 100644 main/ast_expr2.c create mode 100644 main/ast_expr2.fl create mode 100644 main/ast_expr2.h create mode 100644 main/ast_expr2.y create mode 100644 main/ast_expr2f.c create mode 100644 main/asterisk.c create mode 100644 main/asterisk.dynamics create mode 100644 main/asterisk.exports.in create mode 100644 main/astfd.c create mode 100644 main/astmm.c create mode 100644 main/astobj2.c create mode 100644 main/astobj2_container.c create mode 100644 main/astobj2_container_private.h create mode 100644 main/astobj2_hash.c create mode 100644 main/astobj2_private.h create mode 100644 main/astobj2_rbtree.c create mode 100644 main/audiohook.c create mode 100644 main/autochan.c create mode 100644 main/autoservice.c create mode 100644 main/backtrace.c create mode 100644 main/bridge.c create mode 100644 main/bridge_after.c create mode 100644 main/bridge_basic.c create mode 100644 main/bridge_channel.c create mode 100644 main/bridge_roles.c create mode 100644 main/bucket.c create mode 100644 main/buildinfo.c create mode 100644 main/callerid.c create mode 100644 main/ccss.c create mode 100644 main/cdr.c create mode 100644 main/cel.c create mode 100644 main/channel.c create mode 100644 main/channel_internal_api.c create mode 100644 main/chanvars.c create mode 100644 main/cli.c create mode 100644 main/codec.c create mode 100644 main/codec_builtin.c create mode 100644 main/config.c create mode 100644 main/config_options.c create mode 100644 main/conversions.c create mode 100644 main/core_local.c create mode 100644 main/core_unreal.c create mode 100644 main/crypt.c create mode 100644 main/cygload.c create mode 100644 main/data_buffer.c create mode 100644 main/datastore.c create mode 100644 main/db.c create mode 100644 main/devicestate.c create mode 100644 main/dial.c create mode 100644 main/dns.c create mode 100644 main/dns_core.c create mode 100644 main/dns_naptr.c create mode 100644 main/dns_query_set.c create mode 100644 main/dns_recurring.c create mode 100644 main/dns_srv.c create mode 100644 main/dns_system_resolver.c create mode 100644 main/dns_test.c create mode 100644 main/dns_tlsa.c create mode 100644 main/dnsmgr.c create mode 100644 main/dsp.c create mode 100644 main/ecdisa.h create mode 100644 main/endpoints.c create mode 100644 main/enum.c create mode 100644 main/event.c create mode 100644 main/features.c create mode 100644 main/features_config.c create mode 100644 main/features_config.h create mode 100644 main/file.c create mode 100644 main/fixedjitterbuf.c create mode 100644 main/fixedjitterbuf.h create mode 100644 main/format.c create mode 100644 main/format_cache.c create mode 100644 main/format_cap.c create mode 100644 main/format_compatibility.c create mode 100644 main/frame.c create mode 100644 main/framehook.c create mode 100644 main/fskmodem.c create mode 100644 main/fskmodem_float.c create mode 100644 main/fskmodem_int.c create mode 100644 main/global_datastores.c create mode 100644 main/hashtab.c create mode 100644 main/heap.c create mode 100644 main/http.c create mode 100644 main/image.c create mode 100644 main/indications.c create mode 100644 main/io.c create mode 100644 main/iostream.c create mode 100644 main/jitterbuf.c create mode 100644 main/json.c create mode 100644 main/libasteriskpj.c create mode 100644 main/libasteriskssl.c create mode 100644 main/libasteriskssl.exports.in create mode 100644 main/loader.c create mode 100644 main/lock.c create mode 100644 main/logger.c create mode 100644 main/manager.c create mode 100644 main/manager_bridges.c create mode 100644 main/manager_channels.c create mode 100644 main/manager_endpoints.c create mode 100644 main/manager_mwi.c create mode 100644 main/manager_system.c create mode 100644 main/max_forwards.c create mode 100644 main/md5.c create mode 100644 main/media_cache.c create mode 100644 main/media_index.c create mode 100644 main/message.c create mode 100644 main/mixmonitor.c create mode 100644 main/named_acl.c create mode 100644 main/named_locks.c create mode 100644 main/netsock2.c create mode 100644 main/optional_api.c create mode 100644 main/options.c create mode 100644 main/parking.c create mode 100644 main/pbx.c create mode 100644 main/pbx_app.c create mode 100644 main/pbx_builtins.c create mode 100644 main/pbx_functions.c create mode 100644 main/pbx_hangup_handler.c create mode 100644 main/pbx_ignorepat.c create mode 100644 main/pbx_include.c create mode 100644 main/pbx_private.h create mode 100644 main/pbx_sw.c create mode 100644 main/pbx_switch.c create mode 100644 main/pbx_timing.c create mode 100644 main/pbx_variables.c create mode 100644 main/pickup.c create mode 100644 main/plc.c create mode 100644 main/poll.c create mode 100644 main/presencestate.c create mode 100644 main/privacy.c create mode 100644 main/rtp_engine.c create mode 100644 main/say.c create mode 100644 main/sched.c create mode 100644 main/sdp_srtp.c create mode 100644 main/security_events.c create mode 100644 main/sem.c create mode 100644 main/sha1.c create mode 100644 main/sip_api.c create mode 100644 main/slinfactory.c create mode 100644 main/smoother.c create mode 100644 main/sorcery.c create mode 100644 main/sounds.c create mode 100644 main/srv.c create mode 100644 main/stasis.c create mode 100644 main/stasis_bridges.c create mode 100644 main/stasis_cache.c create mode 100644 main/stasis_cache_pattern.c create mode 100644 main/stasis_channels.c create mode 100644 main/stasis_endpoints.c create mode 100644 main/stasis_message.c create mode 100644 main/stasis_message_router.c create mode 100644 main/stasis_system.c create mode 100644 main/stdtime/Makefile create mode 100644 main/stdtime/localtime.c create mode 100644 main/stdtime/private.h create mode 100644 main/stdtime/test.c create mode 100644 main/stdtime/tzfile.h create mode 100644 main/strcompat.c create mode 100644 main/stream.c create mode 100644 main/stringfields.c create mode 100644 main/strings.c create mode 100644 main/stun.c create mode 100644 main/syslog.c create mode 100644 main/taskprocessor.c create mode 100644 main/tcptls.c create mode 100644 main/tdd.c create mode 100644 main/term.c create mode 100644 main/test.c create mode 100644 main/threadpool.c create mode 100644 main/threadstorage.c create mode 100644 main/timing.c create mode 100644 main/translate.c create mode 100644 main/udptl.c create mode 100644 main/ulaw.c create mode 100644 main/uri.c create mode 100644 main/utils.c create mode 100644 main/uuid.c create mode 100644 main/xml.c create mode 100644 main/xmldoc.c create mode 100644 makeopts.in create mode 100644 menuselect/.gitignore create mode 100644 menuselect/Makefile create mode 100644 menuselect/README create mode 100644 menuselect/autoconfig.h.in create mode 100755 menuselect/config.guess create mode 100755 menuselect/config.sub create mode 100755 menuselect/configure create mode 100644 menuselect/configure.ac create mode 100644 menuselect/contrib/Makefile-dummy create mode 100755 menuselect/contrib/menuselect-dummy create mode 100644 menuselect/example_menuselect-tree create mode 100755 menuselect/install-sh create mode 100644 menuselect/linkedlists.h create mode 100755 menuselect/make_version create mode 100644 menuselect/makeopts.in create mode 100644 menuselect/menuselect.c create mode 100644 menuselect/menuselect.h create mode 100644 menuselect/menuselect_curses.c create mode 100644 menuselect/menuselect_gtk.c create mode 100644 menuselect/menuselect_newt.c create mode 100644 menuselect/menuselect_stub.c create mode 100755 menuselect/missing create mode 100644 menuselect/strcompat.c create mode 100644 menuselect/test/build_tools/menuselect-deps create mode 100644 menuselect/test/menuselect-tree create mode 100755 missing create mode 100755 mkinstalldirs create mode 100644 pbx/Makefile create mode 100644 pbx/ael/ael-test/ael-ntest10/extensions.ael create mode 100644 pbx/ael/ael-test/ael-ntest12/extensions.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/extensions.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/qq.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t1/a.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t1/b.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t1/c.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t2/d.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t2/e.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t2/f.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t3/g.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t3/h.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t3/i.ael create mode 100644 pbx/ael/ael-test/ael-ntest22/t3/j.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/extensions.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/qq.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t1/a.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t1/b.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t1/c.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t2/d.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t2/e.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t2/f.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t3/g.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t3/h.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t3/i.ael create mode 100644 pbx/ael/ael-test/ael-ntest23/t3/j.ael create mode 100644 pbx/ael/ael-test/ael-ntest24/extensions.ael create mode 100755 pbx/ael/ael-test/ael-ntest9/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test1/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test11/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test14/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test15/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test16/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test18/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test19/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test2/apptest.ael2 create mode 100644 pbx/ael/ael-test/ael-test2/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test20/extensions.ael create mode 100755 pbx/ael/ael-test/ael-test3/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test3/include1.ael2 create mode 100644 pbx/ael/ael-test/ael-test3/include2.ael2 create mode 100644 pbx/ael/ael-test/ael-test3/include3.ael2 create mode 100644 pbx/ael/ael-test/ael-test3/include4.ael2 create mode 100644 pbx/ael/ael-test/ael-test3/include5.ael2 create mode 100755 pbx/ael/ael-test/ael-test3/telemarket_torture.ael2 create mode 100644 pbx/ael/ael-test/ael-test4/apptest.ael2 create mode 100644 pbx/ael/ael-test/ael-test4/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test5/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test6/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test7/extensions.ael create mode 100644 pbx/ael/ael-test/ael-test8/extensions.ael create mode 100755 pbx/ael/ael-test/ael-vtest13/extensions.ael create mode 100644 pbx/ael/ael-test/ael-vtest13/include1.ael2 create mode 100644 pbx/ael/ael-test/ael-vtest13/include2.ael2 create mode 100644 pbx/ael/ael-test/ael-vtest13/include3.ael2 create mode 100644 pbx/ael/ael-test/ael-vtest13/include4.ael2 create mode 100644 pbx/ael/ael-test/ael-vtest13/include5.ael2 create mode 100755 pbx/ael/ael-test/ael-vtest13/telemarket_torture.ael2 create mode 100644 pbx/ael/ael-test/ael-vtest17/extensions.ael create mode 100644 pbx/ael/ael-test/ael-vtest21/extensions.ael create mode 100644 pbx/ael/ael-test/ael-vtest25/extensions.ael create mode 100644 pbx/ael/ael-test/ref.ael-ntest10 create mode 100644 pbx/ael/ael-test/ref.ael-ntest12 create mode 100644 pbx/ael/ael-test/ref.ael-ntest22 create mode 100644 pbx/ael/ael-test/ref.ael-ntest23 create mode 100644 pbx/ael/ael-test/ref.ael-ntest24 create mode 100644 pbx/ael/ael-test/ref.ael-ntest9 create mode 100644 pbx/ael/ael-test/ref.ael-test1 create mode 100644 pbx/ael/ael-test/ref.ael-test11 create mode 100644 pbx/ael/ael-test/ref.ael-test14 create mode 100644 pbx/ael/ael-test/ref.ael-test15 create mode 100644 pbx/ael/ael-test/ref.ael-test16 create mode 100644 pbx/ael/ael-test/ref.ael-test18 create mode 100644 pbx/ael/ael-test/ref.ael-test19 create mode 100644 pbx/ael/ael-test/ref.ael-test2 create mode 100644 pbx/ael/ael-test/ref.ael-test20 create mode 100644 pbx/ael/ael-test/ref.ael-test3 create mode 100644 pbx/ael/ael-test/ref.ael-test4 create mode 100644 pbx/ael/ael-test/ref.ael-test5 create mode 100644 pbx/ael/ael-test/ref.ael-test6 create mode 100644 pbx/ael/ael-test/ref.ael-test7 create mode 100644 pbx/ael/ael-test/ref.ael-test8 create mode 100644 pbx/ael/ael-test/ref.ael-vtest13 create mode 100644 pbx/ael/ael-test/ref.ael-vtest17 create mode 100644 pbx/ael/ael-test/ref.ael-vtest21 create mode 100644 pbx/ael/ael-test/ref.ael-vtest25 create mode 100755 pbx/ael/ael-test/runtests create mode 100755 pbx/ael/ael-test/setref create mode 100644 pbx/dundi-parser.c create mode 100644 pbx/dundi-parser.h create mode 100644 pbx/pbx_ael.c create mode 100644 pbx/pbx_config.c create mode 100644 pbx/pbx_dundi.c create mode 100644 pbx/pbx_loopback.c create mode 100644 pbx/pbx_lua.c create mode 100644 pbx/pbx_realtime.c create mode 100644 pbx/pbx_spool.c create mode 100644 phoneprov/000000000000-directory.xml create mode 100644 phoneprov/000000000000-phone.cfg create mode 100644 phoneprov/000000000000.cfg create mode 100644 phoneprov/polycom.xml create mode 100644 phoneprov/polycom_line.xml create mode 100644 phoneprov/snom-mac.xml create mode 100644 res/Makefile create mode 100644 res/ael/.gitignore create mode 100644 res/ael/ael.flex create mode 100644 res/ael/ael.tab.c create mode 100644 res/ael/ael.tab.h create mode 100644 res/ael/ael.y create mode 100644 res/ael/ael_lex.c create mode 100644 res/ael/pval.c create mode 100644 res/ari.make create mode 100644 res/ari/ari_model_validators.c create mode 100644 res/ari/ari_model_validators.h create mode 100644 res/ari/ari_websockets.c create mode 100644 res/ari/cli.c create mode 100644 res/ari/config.c create mode 100644 res/ari/internal.h create mode 100644 res/ari/resource_applications.c create mode 100644 res/ari/resource_applications.h create mode 100644 res/ari/resource_asterisk.c create mode 100644 res/ari/resource_asterisk.h create mode 100644 res/ari/resource_bridges.c create mode 100644 res/ari/resource_bridges.h create mode 100644 res/ari/resource_channels.c create mode 100644 res/ari/resource_channels.h create mode 100644 res/ari/resource_device_states.c create mode 100644 res/ari/resource_device_states.h create mode 100644 res/ari/resource_endpoints.c create mode 100644 res/ari/resource_endpoints.h create mode 100644 res/ari/resource_events.c create mode 100644 res/ari/resource_events.h create mode 100644 res/ari/resource_mailboxes.c create mode 100644 res/ari/resource_mailboxes.h create mode 100644 res/ari/resource_playbacks.c create mode 100644 res/ari/resource_playbacks.h create mode 100644 res/ari/resource_recordings.c create mode 100644 res/ari/resource_recordings.h create mode 100644 res/ari/resource_sounds.c create mode 100644 res/ari/resource_sounds.h create mode 100644 res/parking/parking_applications.c create mode 100644 res/parking/parking_bridge.c create mode 100644 res/parking/parking_bridge_features.c create mode 100644 res/parking/parking_controller.c create mode 100644 res/parking/parking_devicestate.c create mode 100644 res/parking/parking_manager.c create mode 100644 res/parking/parking_tests.c create mode 100644 res/parking/parking_ui.c create mode 100644 res/parking/res_parking.h create mode 100644 res/res.xml create mode 100644 res/res_adsi.c create mode 100644 res/res_ael_share.c create mode 100644 res/res_ael_share.exports.in create mode 100644 res/res_agi.c create mode 100644 res/res_agi.exports.in create mode 100644 res/res_ari.c create mode 100644 res/res_ari.exports.in create mode 100644 res/res_ari_applications.c create mode 100644 res/res_ari_asterisk.c create mode 100644 res/res_ari_bridges.c create mode 100644 res/res_ari_channels.c create mode 100644 res/res_ari_device_states.c create mode 100644 res/res_ari_endpoints.c create mode 100644 res/res_ari_events.c create mode 100644 res/res_ari_mailboxes.c create mode 100644 res/res_ari_model.c create mode 100644 res/res_ari_model.exports.in create mode 100644 res/res_ari_playbacks.c create mode 100644 res/res_ari_recordings.c create mode 100644 res/res_ari_sounds.c create mode 100644 res/res_calendar.c create mode 100644 res/res_calendar.exports.in create mode 100644 res/res_calendar_caldav.c create mode 100644 res/res_calendar_ews.c create mode 100644 res/res_calendar_exchange.c create mode 100644 res/res_calendar_icalendar.c create mode 100644 res/res_chan_stats.c create mode 100644 res/res_clialiases.c create mode 100644 res/res_clioriginate.c create mode 100644 res/res_config_curl.c create mode 100644 res/res_config_ldap.c create mode 100644 res/res_config_odbc.c create mode 100644 res/res_config_pgsql.c create mode 100644 res/res_config_sqlite.c create mode 100644 res/res_config_sqlite3.c create mode 100644 res/res_convert.c create mode 100644 res/res_corosync.c create mode 100644 res/res_crypto.c create mode 100644 res/res_crypto.exports.in create mode 100644 res/res_curl.c create mode 100644 res/res_endpoint_stats.c create mode 100644 res/res_fax.c create mode 100644 res/res_fax.exports.in create mode 100644 res/res_fax_spandsp.c create mode 100644 res/res_format_attr_celt.c create mode 100644 res/res_format_attr_g729.c create mode 100644 res/res_format_attr_h263.c create mode 100644 res/res_format_attr_h264.c create mode 100644 res/res_format_attr_ilbc.c create mode 100644 res/res_format_attr_opus.c create mode 100644 res/res_format_attr_silk.c create mode 100644 res/res_format_attr_siren14.c create mode 100644 res/res_format_attr_siren7.c create mode 100644 res/res_format_attr_vp8.c create mode 100644 res/res_hep.c create mode 100644 res/res_hep.exports.in create mode 100644 res/res_hep_pjsip.c create mode 100644 res/res_hep_rtcp.c create mode 100644 res/res_http_media_cache.c create mode 100644 res/res_http_post.c create mode 100644 res/res_http_websocket.c create mode 100644 res/res_http_websocket.exports.in create mode 100644 res/res_limit.c create mode 100644 res/res_manager_devicestate.c create mode 100644 res/res_manager_presencestate.c create mode 100644 res/res_monitor.c create mode 100644 res/res_monitor.exports.in create mode 100644 res/res_musiconhold.c create mode 100644 res/res_mutestream.c create mode 100644 res/res_mwi_external.c create mode 100644 res/res_mwi_external.exports.in create mode 100644 res/res_mwi_external_ami.c create mode 100644 res/res_odbc.c create mode 100644 res/res_odbc.exports.in create mode 100644 res/res_odbc_transaction.c create mode 100644 res/res_odbc_transaction.exports.in create mode 100644 res/res_parking.c create mode 100644 res/res_phoneprov.c create mode 100644 res/res_phoneprov.exports.in create mode 100644 res/res_pjproject.c create mode 100644 res/res_pjproject.exports.in create mode 100644 res/res_pjsip.c create mode 100644 res/res_pjsip.exports.in create mode 100644 res/res_pjsip/config_auth.c create mode 100644 res/res_pjsip/config_domain_aliases.c create mode 100644 res/res_pjsip/config_global.c create mode 100644 res/res_pjsip/config_system.c create mode 100644 res/res_pjsip/config_transport.c create mode 100644 res/res_pjsip/include/res_pjsip_private.h create mode 100644 res/res_pjsip/location.c create mode 100644 res/res_pjsip/pjsip_cli.c create mode 100644 res/res_pjsip/pjsip_configuration.c create mode 100644 res/res_pjsip/pjsip_distributor.c create mode 100644 res/res_pjsip/pjsip_global_headers.c create mode 100644 res/res_pjsip/pjsip_message_filter.c create mode 100644 res/res_pjsip/pjsip_options.c create mode 100644 res/res_pjsip/pjsip_resolver.c create mode 100644 res/res_pjsip/pjsip_scheduler.c create mode 100644 res/res_pjsip/pjsip_session.c create mode 100644 res/res_pjsip/pjsip_transport_events.c create mode 100644 res/res_pjsip/pjsip_transport_management.c create mode 100644 res/res_pjsip/presence_xml.c create mode 100644 res/res_pjsip/security_events.c create mode 100644 res/res_pjsip_acl.c create mode 100644 res/res_pjsip_authenticator_digest.c create mode 100644 res/res_pjsip_caller_id.c create mode 100644 res/res_pjsip_config_wizard.c create mode 100644 res/res_pjsip_dialog_info_body_generator.c create mode 100644 res/res_pjsip_diversion.c create mode 100644 res/res_pjsip_dlg_options.c create mode 100644 res/res_pjsip_dtmf_info.c create mode 100644 res/res_pjsip_empty_info.c create mode 100644 res/res_pjsip_endpoint_identifier_anonymous.c create mode 100644 res/res_pjsip_endpoint_identifier_ip.c create mode 100644 res/res_pjsip_endpoint_identifier_user.c create mode 100644 res/res_pjsip_exten_state.c create mode 100644 res/res_pjsip_exten_state.exports.in create mode 100644 res/res_pjsip_header_funcs.c create mode 100644 res/res_pjsip_history.c create mode 100644 res/res_pjsip_logger.c create mode 100644 res/res_pjsip_messaging.c create mode 100644 res/res_pjsip_mwi.c create mode 100644 res/res_pjsip_mwi_body_generator.c create mode 100644 res/res_pjsip_nat.c create mode 100644 res/res_pjsip_notify.c create mode 100644 res/res_pjsip_one_touch_record_info.c create mode 100644 res/res_pjsip_outbound_authenticator_digest.c create mode 100644 res/res_pjsip_outbound_publish.c create mode 100644 res/res_pjsip_outbound_publish.exports.in create mode 100644 res/res_pjsip_outbound_registration.c create mode 100644 res/res_pjsip_path.c create mode 100644 res/res_pjsip_phoneprov_provider.c create mode 100644 res/res_pjsip_pidf_body_generator.c create mode 100644 res/res_pjsip_pidf_digium_body_supplement.c create mode 100644 res/res_pjsip_pidf_eyebeam_body_supplement.c create mode 100644 res/res_pjsip_publish_asterisk.c create mode 100644 res/res_pjsip_pubsub.c create mode 100644 res/res_pjsip_pubsub.exports.in create mode 100644 res/res_pjsip_refer.c create mode 100644 res/res_pjsip_registrar.c create mode 100644 res/res_pjsip_rfc3326.c create mode 100644 res/res_pjsip_sdp_rtp.c create mode 100644 res/res_pjsip_send_to_voicemail.c create mode 100644 res/res_pjsip_session.c create mode 100644 res/res_pjsip_session.exports.in create mode 100644 res/res_pjsip_sips_contact.c create mode 100644 res/res_pjsip_t38.c create mode 100644 res/res_pjsip_transport_websocket.c create mode 100644 res/res_pjsip_xpidf_body_generator.c create mode 100644 res/res_pktccops.c create mode 100644 res/res_pktccops.exports.in create mode 100644 res/res_realtime.c create mode 100644 res/res_remb_modifier.c create mode 100644 res/res_resolver_unbound.c create mode 100644 res/res_rtp_asterisk.c create mode 100644 res/res_rtp_multicast.c create mode 100644 res/res_rtp_multicast.exports.in create mode 100644 res/res_security_log.c create mode 100644 res/res_smdi.c create mode 100644 res/res_smdi.exports.in create mode 100644 res/res_snmp.c create mode 100644 res/res_sorcery_astdb.c create mode 100644 res/res_sorcery_config.c create mode 100644 res/res_sorcery_memory.c create mode 100644 res/res_sorcery_memory_cache.c create mode 100644 res/res_sorcery_realtime.c create mode 100644 res/res_speech.c create mode 100644 res/res_speech.exports.in create mode 100644 res/res_srtp.c create mode 100644 res/res_srtp.exports.in create mode 100644 res/res_stasis.c create mode 100644 res/res_stasis.exports.in create mode 100644 res/res_stasis_answer.c create mode 100644 res/res_stasis_answer.exports.in create mode 100644 res/res_stasis_device_state.c create mode 100644 res/res_stasis_device_state.exports.in create mode 100644 res/res_stasis_mailbox.c create mode 100644 res/res_stasis_mailbox.exports.in create mode 100644 res/res_stasis_playback.c create mode 100644 res/res_stasis_playback.exports.in create mode 100644 res/res_stasis_recording.c create mode 100644 res/res_stasis_recording.exports.in create mode 100644 res/res_stasis_snoop.c create mode 100644 res/res_stasis_snoop.exports.in create mode 100644 res/res_stasis_test.c create mode 100644 res/res_stasis_test.exports.in create mode 100644 res/res_statsd.c create mode 100644 res/res_statsd.exports.in create mode 100644 res/res_stun_monitor.c create mode 100644 res/res_timing_dahdi.c create mode 100644 res/res_timing_kqueue.c create mode 100644 res/res_timing_pthread.c create mode 100644 res/res_timing_timerfd.c create mode 100644 res/res_xmpp.c create mode 100644 res/res_xmpp.exports.in create mode 100644 res/snmp/agent.c create mode 100644 res/snmp/agent.h create mode 100644 res/srtp/srtp_compat.h create mode 100644 res/stasis/app.c create mode 100644 res/stasis/app.h create mode 100644 res/stasis/command.c create mode 100644 res/stasis/command.h create mode 100644 res/stasis/control.c create mode 100644 res/stasis/control.h create mode 100644 res/stasis/messaging.c create mode 100644 res/stasis/messaging.h create mode 100644 res/stasis/stasis_bridge.c create mode 100644 res/stasis/stasis_bridge.h create mode 100644 res/stasis_recording/stored.c create mode 100644 rest-api-templates/README.txt create mode 100644 rest-api-templates/api.wiki.mustache create mode 100644 rest-api-templates/ari.make.mustache create mode 100644 rest-api-templates/ari_model_validators.c.mustache create mode 100644 rest-api-templates/ari_model_validators.h.mustache create mode 100644 rest-api-templates/ari_resource.c.mustache create mode 100644 rest-api-templates/ari_resource.h.mustache create mode 100644 rest-api-templates/asterisk_processor.py create mode 100644 rest-api-templates/body_parsing.mustache create mode 100644 rest-api-templates/do-not-edit.mustache create mode 100755 rest-api-templates/make_ari_stubs.py create mode 100644 rest-api-templates/models.wiki.mustache create mode 100644 rest-api-templates/odict.py create mode 100644 rest-api-templates/param_cleanup.mustache create mode 100644 rest-api-templates/param_parsing.mustache create mode 100644 rest-api-templates/res_ari_resource.c.mustache create mode 100644 rest-api-templates/rest_handler.mustache create mode 100644 rest-api-templates/swagger_model.py create mode 100644 rest-api-templates/transform.py create mode 100644 rest-api/README.txt create mode 100644 rest-api/api-docs/applications.json create mode 100644 rest-api/api-docs/asterisk.json create mode 100644 rest-api/api-docs/bridges.json create mode 100644 rest-api/api-docs/channels.json create mode 100644 rest-api/api-docs/deviceStates.json create mode 100644 rest-api/api-docs/endpoints.json create mode 100644 rest-api/api-docs/events.json create mode 100644 rest-api/api-docs/mailboxes.json create mode 100644 rest-api/api-docs/playbacks.json create mode 100644 rest-api/api-docs/recordings.json create mode 100644 rest-api/api-docs/sounds.json create mode 100644 rest-api/resources.json create mode 100644 sample.call create mode 100644 sounds/Makefile create mode 100644 sounds/sounds.xml create mode 100644 static-http/ajamdemo.html create mode 100644 static-http/astman.css create mode 100644 static-http/astman.js create mode 100644 static-http/mantest.html create mode 100644 static-http/prototype.js create mode 100755 tests/CI/buildAsterisk.sh create mode 100644 tests/CI/ci.functions create mode 100644 tests/CI/gateTestGroups.json create mode 100644 tests/CI/gates.jenkinsfile create mode 100755 tests/CI/installAsterisk.sh create mode 100644 tests/CI/periodic-dailyTestGroups.json create mode 100644 tests/CI/periodics-daily.jenkinsfile create mode 100755 tests/CI/processCoverage.sh create mode 100755 tests/CI/publishAsteriskDocs.sh create mode 100644 tests/CI/ref_debug.jenkinsfile create mode 100644 tests/CI/ref_debugTestGroups.json create mode 100755 tests/CI/runTestsuite.sh create mode 100755 tests/CI/runUnittests.sh create mode 100755 tests/CI/setupJenkinsEnvironment.sh create mode 100755 tests/CI/setupRealtime.sh create mode 100755 tests/CI/teardownRealtime.sh create mode 100644 tests/CI/unittests.jenkinsfile create mode 100644 tests/Makefile create mode 100644 tests/test_abstract_jb.c create mode 100644 tests/test_acl.c create mode 100755 tests/test_ami_security_events.sh create mode 100644 tests/test_amihooks.c create mode 100644 tests/test_aoc.c create mode 100644 tests/test_app.c create mode 100644 tests/test_ari.c create mode 100644 tests/test_ari_model.c create mode 100644 tests/test_ast_format_str_reduce.c create mode 100644 tests/test_astobj2.c create mode 100644 tests/test_astobj2_thrash.c create mode 100644 tests/test_astobj2_weaken.c create mode 100644 tests/test_bridging.c create mode 100644 tests/test_bucket.c create mode 100644 tests/test_callerid.c create mode 100644 tests/test_cdr.c create mode 100644 tests/test_cel.c create mode 100644 tests/test_channel.c create mode 100644 tests/test_channel_feature_hooks.c create mode 100644 tests/test_config.c create mode 100644 tests/test_conversions.c create mode 100644 tests/test_core_codec.c create mode 100644 tests/test_core_format.c create mode 100644 tests/test_data_buffer.c create mode 100644 tests/test_db.c create mode 100644 tests/test_devicestate.c create mode 100644 tests/test_dlinklists.c create mode 100644 tests/test_dns.c create mode 100644 tests/test_dns_naptr.c create mode 100644 tests/test_dns_query_set.c create mode 100644 tests/test_dns_recurring.c create mode 100644 tests/test_dns_srv.c create mode 100644 tests/test_endpoints.c create mode 100644 tests/test_event.c create mode 100644 tests/test_expr.c create mode 100644 tests/test_file.c create mode 100644 tests/test_format_cache.c create mode 100644 tests/test_format_cap.c create mode 100644 tests/test_func_file.c create mode 100644 tests/test_gosub.c create mode 100644 tests/test_hashtab_thrash.c create mode 100644 tests/test_heap.c create mode 100644 tests/test_http_media_cache.c create mode 100644 tests/test_jitterbuf.c create mode 100644 tests/test_json.c create mode 100644 tests/test_linkedlists.c create mode 100644 tests/test_locale.c create mode 100644 tests/test_logger.c create mode 100644 tests/test_media_cache.c create mode 100644 tests/test_message.c create mode 100644 tests/test_named_lock.c create mode 100644 tests/test_netsock2.c create mode 100644 tests/test_optional_api.c create mode 100644 tests/test_pbx.c create mode 100644 tests/test_poll.c create mode 100644 tests/test_res_pjsip_scheduler.c create mode 100644 tests/test_res_stasis.c create mode 100644 tests/test_sched.c create mode 100644 tests/test_scoped_lock.c create mode 100644 tests/test_security_events.c create mode 100644 tests/test_skel.c create mode 100644 tests/test_sorcery.c create mode 100644 tests/test_sorcery_astdb.c create mode 100644 tests/test_sorcery_memory_cache_thrash.c create mode 100644 tests/test_sorcery_realtime.c create mode 100644 tests/test_stasis.c create mode 100644 tests/test_stasis_channels.c create mode 100644 tests/test_stasis_endpoints.c create mode 100644 tests/test_stream.c create mode 100644 tests/test_stringfields.c create mode 100644 tests/test_strings.c create mode 100644 tests/test_substitution.c create mode 100644 tests/test_taskprocessor.c create mode 100644 tests/test_threadpool.c create mode 100644 tests/test_time.c create mode 100644 tests/test_uri.c create mode 100644 tests/test_utils.c create mode 100644 tests/test_uuid.c create mode 100644 tests/test_vector.c create mode 100644 tests/test_voicemail_api.c create mode 100644 tests/test_websocket_client.c create mode 100644 tests/test_xml_escape.c create mode 100644 third-party/Makefile create mode 100644 third-party/Makefile.rules create mode 100755 third-party/apply_patches create mode 100644 third-party/configure.m4 create mode 100644 third-party/jansson/.gitignore create mode 100644 third-party/jansson/Makefile create mode 100644 third-party/jansson/Makefile.rules create mode 100644 third-party/jansson/configure.m4 create mode 100644 third-party/jansson/jansson-2.12.tar.bz2.md5 create mode 100644 third-party/jansson/patches/README create mode 100644 third-party/pjproject/.gitignore create mode 100644 third-party/pjproject/Makefile create mode 100644 third-party/pjproject/Makefile.rules create mode 100644 third-party/pjproject/configure.m4 create mode 100644 third-party/pjproject/patches/0000-configure-ssl-library-path.patch create mode 100644 third-party/pjproject/patches/0000-remove-third-party.patch create mode 100644 third-party/pjproject/patches/0000-set_apps_initial_log_level.patch create mode 100644 third-party/pjproject/patches/0000-solaris.patch create mode 100644 third-party/pjproject/patches/0010-outgoing_connected_line_method_update.patch create mode 100644 third-party/pjproject/patches/0020-Fixed-2172-Avoid-double-reference-counter-decrements.patch create mode 100644 third-party/pjproject/patches/README create mode 100644 third-party/pjproject/patches/asterisk_malloc_debug.c create mode 100644 third-party/pjproject/patches/asterisk_malloc_debug.h create mode 100644 third-party/pjproject/patches/config_site.h create mode 100644 third-party/pjproject/patches/user.mak create mode 100644 third-party/pjproject/pjproject-2.8.tar.bz2.md5 create mode 100644 third-party/versions.mak create mode 100644 utils/.gitignore create mode 100644 utils/Makefile create mode 100644 utils/ael_main.c create mode 100644 utils/astcanary.c create mode 100644 utils/astdb2bdb.c create mode 100644 utils/astdb2sqlite3.c create mode 100644 utils/astman.1 create mode 100644 utils/astman.c create mode 100644 utils/check_expr.c create mode 100644 utils/clicompat.c create mode 100644 utils/conf2ael.c create mode 100644 utils/conf_bridge_binaural_hrir_importer.c create mode 100644 utils/conf_bridge_binaural_hrir_importer.h create mode 100644 utils/db1-ast/Makefile create mode 100644 utils/db1-ast/btree/bt_close.c create mode 100644 utils/db1-ast/btree/bt_conv.c create mode 100644 utils/db1-ast/btree/bt_debug.c create mode 100644 utils/db1-ast/btree/bt_delete.c create mode 100644 utils/db1-ast/btree/bt_get.c create mode 100644 utils/db1-ast/btree/bt_open.c create mode 100644 utils/db1-ast/btree/bt_overflow.c create mode 100644 utils/db1-ast/btree/bt_page.c create mode 100644 utils/db1-ast/btree/bt_put.c create mode 100644 utils/db1-ast/btree/bt_search.c create mode 100644 utils/db1-ast/btree/bt_seq.c create mode 100644 utils/db1-ast/btree/bt_split.c create mode 100644 utils/db1-ast/btree/bt_utils.c create mode 100644 utils/db1-ast/btree/btree.h create mode 100644 utils/db1-ast/btree/extern.h create mode 100644 utils/db1-ast/db/db.c create mode 100644 utils/db1-ast/hash/README create mode 100644 utils/db1-ast/hash/extern.h create mode 100644 utils/db1-ast/hash/hash.c create mode 100644 utils/db1-ast/hash/hash.h create mode 100644 utils/db1-ast/hash/hash_bigkey.c create mode 100644 utils/db1-ast/hash/hash_buf.c create mode 100644 utils/db1-ast/hash/hash_func.c create mode 100644 utils/db1-ast/hash/hash_log2.c create mode 100644 utils/db1-ast/hash/hash_page.c create mode 100644 utils/db1-ast/hash/hsearch.c create mode 100644 utils/db1-ast/hash/ndbm.c create mode 100644 utils/db1-ast/hash/page.h create mode 100644 utils/db1-ast/hash/search.h create mode 100644 utils/db1-ast/include/circ-queue.h create mode 100644 utils/db1-ast/include/compat.h create mode 100644 utils/db1-ast/include/db.h create mode 100644 utils/db1-ast/include/mpool.h create mode 100644 utils/db1-ast/include/ndbm.h create mode 100644 utils/db1-ast/libdb.map create mode 100644 utils/db1-ast/mpool/README create mode 100644 utils/db1-ast/mpool/mpool.c create mode 100644 utils/db1-ast/recno/extern.h create mode 100644 utils/db1-ast/recno/rec_close.c create mode 100644 utils/db1-ast/recno/rec_delete.c create mode 100644 utils/db1-ast/recno/rec_get.c create mode 100644 utils/db1-ast/recno/rec_open.c create mode 100644 utils/db1-ast/recno/rec_put.c create mode 100644 utils/db1-ast/recno/rec_search.c create mode 100644 utils/db1-ast/recno/rec_seq.c create mode 100644 utils/db1-ast/recno/rec_utils.c create mode 100644 utils/db1-ast/recno/recno.h create mode 100644 utils/expr2.testinput create mode 100644 utils/extconf.c create mode 100644 utils/frame.c create mode 100644 utils/frame.h create mode 100644 utils/muted.c create mode 100644 utils/smsq.c create mode 100644 utils/stereorize.c create mode 100644 utils/streamplayer.c create mode 100644 utils/utils.xml diff --git a/.cleancount b/.cleancount new file mode 100644 index 0000000..425151f --- /dev/null +++ b/.cleancount @@ -0,0 +1 @@ +40 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0f31820 --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ + +# See .gitignore in subdirectories for more ignored files + +*~ +*.[oadi] +*.gz +*.ii +*.oo +*.eo +*.so +*.exports +*.moduleinfo +*.makeopts +*.makedeps +.lastclean +/.pc +aclocal.m4 +autom4te.cache +config.log +config.status +defaults.h +makeopts +makeopts.embed_rules +menuselect-tree +*.sha1 +*.pyc +*.gcno +*.gcda +latex +doxygen.log +out/ +*.orig +tests/CI/output + diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..a57dca7 --- /dev/null +++ b/.gitreview @@ -0,0 +1,10 @@ +[gerrit] +defaultbranch=16 +# +# Intentional padding to ensure it is possible to point a commit +# to an alternative gerrit server/repository without breaking +# cherry-pick between branches. +# +host=gerrit.asterisk.org +port=29418 +project=asterisk.git diff --git a/.lastclean b/.lastclean new file mode 100644 index 0000000..425151f --- /dev/null +++ b/.lastclean @@ -0,0 +1 @@ +40 diff --git a/.version b/.version new file mode 100644 index 0000000..e9c8486 --- /dev/null +++ b/.version @@ -0,0 +1 @@ +16.2.1 \ No newline at end of file diff --git a/BSDmakefile b/BSDmakefile new file mode 100644 index 0000000..de6fc9c --- /dev/null +++ b/BSDmakefile @@ -0,0 +1,11 @@ +# This is a convenience script for systems on which BSD make is the default, +# such that typing 'make' will do what people expect, instead of producing an +# error (due to incompatibilities between BSD make and GNU make). + +.include "makeopts" + +all:: + $(MAKE) + +$(.TARGETS):: + $(MAKE) $(.TARGETS) diff --git a/BUGS b/BUGS new file mode 100644 index 0000000..624459e --- /dev/null +++ b/BUGS @@ -0,0 +1,22 @@ +Asterisk Bug Tracking Information +================================= + +To learn about and report Asterisk bugs, please visit +the official Asterisk Bug Tracker at: + + https://issues.asterisk.org/jira + +For more information on using the bug tracker, or to +learn how you can contribute by acting as a bug marshal +please see: + + http://www.asterisk.org/developers/bug-guidelines + +If you would like to submit a feature request, please +resist the temptation to post it to the bug tracker. +Feature requests should be posted to the asterisk-dev +mailing list, located at: + + http://lists.digium.com + +Thank you! diff --git a/CHANGES b/CHANGES new file mode 100644 index 0000000..f5deca9 --- /dev/null +++ b/CHANGES @@ -0,0 +1,6625 @@ +============================================================================== +=== +=== This file documents the new and/or enhanced functionality added in +=== the Asterisk versions listed below. This file does NOT include +=== changes in behavior that would not be backwards compatible with +=== previous versions; for that information see the UPGRADE.txt file +=== and the other UPGRADE files for older releases. +=== +============================================================================== + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 16.1.0 to Asterisk 16.2.0 ------------ +------------------------------------------------------------------------------ + +ARI +------------------ + * Whenever an ARI application is started, a context will be created for it + automatically as long as one does not already exist, following the format + 'stasis-'. Two extensions are also added to this context: a match-all + extension, and the 'h' extension. Any phone that registers under this context + will place all calls to the corresponding Stasis application. + +res_pjsip +------------------ + * Added "send_contact_status_on_update_registration" global configuration option + to enable sending AMI ContactStatus event when a device refreshes its registration. + +Core +------------------ + * Reworked the media indexer so it doesn't cache the index. Testing revealed + that the cache added no benefit but that it could consume excessive memory. + Two new index related functions were created: ast_sounds_get_index_for_file() + and ast_media_index_update_for_file() which restrict index updating to + specific sound files. The original ast_sounds_get_index() and + ast_media_index_update() calls are still available but since they no longer + cache the results internally, developers should re-use an index they may + already have instead of calling ast_sounds_get_index() repeatedly. If + information for only a single file is needed, ast_sounds_get_index_for_file() + should be called instead of ast_sounds_get_index(). + +Features +------------------ + * Before Asterisk 12, when using the automon or automixmon features defined + in features.conf, a channel variable (TOUCH_MIXMONITOR_OUTPUT) was set on + both channels, indicating the filename of the recording. + + When bridging was overhauled in Asterisk 12, the behavior was changed such + that the variable was only set on the peer channel and not on the channel + that initiated the automon or automixmon. + + The previous behavior has been restored so both channels receive the + channel variable when one of these features is invoked. + +app_voicemail +------------------ + * You can now specify a special context with the "aliasescontext" parameter + in voicemail.conf which will allow you to create aliases for physical + mailboxes. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 16.0.0 to Asterisk 16.1.0 ------------ +------------------------------------------------------------------------------ + +pbx_config +------------------ + * pbx_config will now find and process multiple 'globals' sections from + extensions.conf. Variables are processed in the order they are found + and duplicate variables overwrite the previous value. + +chan_pjsip +------------------ + * New dialplan function PJSIP_PARSE_URI added to parse an URI and return + a specified part of the URI. + +Core +------------------ + * ast_bt_get_symbols() now returns a vector of strings instead of an + array of strings. This must be freed with ast_bt_free_symbols. + +res_pjsip +------------------ + * New options 'trust_connected_line' and 'send_connected_line' have been + added to the endpoint. The option 'trust_connected_line' is to control + if connected line updates are accepted from this endpoint. + The option 'send_connected_line' is to control if connected line updates + can be sent to this endpoint. + The default value is 'yes' for both options. + +res_rtp_asterisk +------------------ + * The existing strictrtp option in rtp.conf has a new choice availabe, called + 'seqno', which behaves the same way as setting strictrtp to 'yes', but will + ignore the time interval during learning so that bursts of packets can still + trigger learning our source. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 15 to Asterisk 16 -------------------- +------------------------------------------------------------------------------ + +app_fax +------------------ + * The app_fax module is now deprecated, users should migrate to the + replacement module res_fax. + +app_originate +------------------ + * An 'a' option has been added to the Originate dialplan application which + will execute the originate in an asynchronous fashion. If set then the + application will return immediately without waiting for the originated + channel to answer. + +Build System +------------------ + * MALLOC_DEBUG no longer has an effect on Asterisk's ABI. Asterisk built + with MALLOC_DEBUG can now successfully load binary modules built without + MALLOC_DEBUG and vice versa. Third-party pre-compiled modules no longer + need to have a special build with it enabled. + + * Asterisk now depends on libjansson >= 2.11. If this version is not + available on your distro you can use `./configure --with-jansson-bundled`. + +app_macro +------------------ + * The app_macro module is now deprecated and by default it is no longer + built. Users should migrate to app_stack (Gosub). A warning is logged + the first time any Macro is used. + +app_setcallerid +------------------ + * The app_setcallerid module has been removed. The CALLERID dialplan function + should be used instead. + +chan_sip +------------------ + * New function SIP_HEADERS() enumerates all headers in the incoming INVITE. + + * The variable GET_TRANSFERRER_DATA set in the peer channel causes matching + headers be retrieved from the REFER message and made accessible to the + dialplan in the hash TRANSFER_DATA. + +chan_dahdi +------------------ + * Timeouts for reading digits from analog phones are now configurable in + chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout. + +AMI +------------------ + * The ContactStatus and Status fields for the manager events ContactStatus + and ContactStatusDetail are now set to "NonQualified" when a contact exists + but has not been qualified. + + * The "Newexten" event is now part of the "dialplan" class. The documentation + for Asterisk 15 already specified this, but the implementation was actually + using the "call" class instead. + +ARI +------------------ + * The ContactInfo event's contact_status field is now set to "NonQualified" + when a contact exists but has not been qualified. + +app_queue +------------------ + * Added the ability to set the wrapuptime in the configuration of member. + When set the wrapuptime on the member is used instead of the wrapuptime + defined for the queue itself. + + * Added predial handler support for caller and callee channels with the + B and b options respectively. This is similar to the predial support + in app_dial. + +res_config_sqlite +------------------ + * The res_config_sqlite module is now deprecated, users should migrate to the + replacement module res_config_sqlite3. + +res_monitor +------------------ + * The res_monitor module is now deprecated, users should migrate to the + replacement module app_mixmonitor. + +res_pjsip +------------------ + * A new AMI action, PJSIPShowAors, has been added which displays information + about all configured PJSIP AORs. + + * A new AMI action, PJSIPShowAuths, has been added which displays information + about all configured PJSIP Auths. + + * A new AMI action, PJSIPShowContacts, has been added which displays information + about all configured PJSIP Contacts. + +res_pjsip_registrar_expire +------------------ + * The res_pjsip_registrar_expire module has been removed. The functionality has + been moved into res_pjsip_registrar. + +func_audiohookinherit +------------------ + * The func_audiohookinherit module has been removed. Due to architectural changes + in Asterisk 12, audiohook inheritance is performed automatically and this + function now lacks function. + +cdr_syslog +------------------ + * The cdr_syslog module is now deprecated and by default it is no longer + built. + +cdr_sqlite +------------------ + * The cdr_sqlite module has been removed. Users should move to using the + cdr_sqlite3_custom module instead. + +format_jpeg +------------------ + * The format_jpeg module has been removed. + +pbx_dundi +------------------ + * DUNDi now supports IPv6 + +Core: +------------------ + * libedit is no longer available as an embedded library and must be provided + by the system. + * The STATIC_BUILD functionality has been removed as it has not been maintained + and has not worked in quite some time. + * The module loader now enforces inter-module dependencies. This ensures that + a module is not started before another it depends on, even if preload is used. + If a dependency is not available or fails to startup this will block any + dependants from startup. + * Parts of the Asterisk core which can load configuration from realtime are now + built-in modules. It is no longer necessary to preload realtime drivers as + they are always initialized before the built-in modules. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 15.5.0 to Asterisk 15.6.0 ------------ +------------------------------------------------------------------------------ + +res_pjsip +------------------ + * A new option 'suppress_q850_reason_headers' has been added to the endpoint + object. Some devices can't accept multiple Reason headers and get confused + when both 'SIP' and 'Q.850' Reason headers are received. This option allows + the 'Q.850' Reason header to be suppressed. The default value is 'no'. + +res_pjsip_endpoint_identifier_ip +------------------ + * Added regex support to the identify section match_header option. You + specify a regex instead of an explicit string by surrounding the header + value with slashes: + match_header = SIPHeader: /regex/ + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 15.4.0 to Asterisk 15.5.0 ------------ +------------------------------------------------------------------------------ + +Core +------------------ + * Core bridging and, more specifically, bridge_softmix have been enhanced to + relay received frames of type TEXT or TEXT_DATA to all participants in a + softmix bridge. res_pjsip_messaging and chan_pjsip have been enhanced to + take advantage of this so when res_pjsip_messaging receives an in-dialog + MESSAGE message from a user in a conference call, it's relayed to all + other participants in the call. + +app_sendtext +------------------ + * Support Enhanced Messaging. SendText now accepts new channel variables + that can be used to override the To and From display names and set the + Content-Type of a message. Since you can now set Content-Type, other + text/* content types are now valid. + +app_confbridge +------------------ + * ConfbridgeList now shows talking status. This utilizes the same voice + detection as the ConfbridgeTalking event, so bridges must be configured + with "talk_detection_events=yes" for this flag to have meaning. + + * ConfBridge can now send events to participants via in-dialog MESSAGEs. + All current Confbridge events are supported, such as ConfbridgeJoin, + ConfbridgeLeave, etc. In addition to those events, a new event + ConfbridgeWelcome has been added that will send a list of all + current participants to a new participant. + +res_pjsip +------------------ + * Two new options have been added to the system and endpoint objects to + control whether, on outbound calls, Asterisk will accept updated SDP answers + during the initial INVITE transaction when 100rel is not in effect. + This usually happens when the INVITE is forked to multiple UASs and more + than one sends an SDP answer or when a single UAS needs to change a media + port to switch from custom ringback to the actual media destination. + + The 'follow_early_media_forked' option sets whether Asterisk will accept + the updated SDP when the To tag on the subsequent response is different than + that on the the previous response. This usually occurs in the forked INVITE + scenario. The default value is "yes" which is the current behavior. + + The 'accept_multiple_sdp_answers' flag sets whether Asterisk will accept the + updated SDP when the To tag on the subsequent response is the same as that + on the previous response. This can occur when a UAS needs to switch media + ports from custom ringback to the final media path. The default value is + "no" which is the current behavior. + + These options have to be enabled system-wide in the system config section + of pjsip.conf as well as on individual endpoints that require the + functionality. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 15.3.0 to Asterisk 15.4.0 ------------ +------------------------------------------------------------------------------ + +Core +------------------ + * A new configuration option "genericplc_on_equal_codecs" was added to the + "plc" section of codecs.conf to allow generic packet loss concealment even + if no transcoding was originally needed. Transcoding via SLIN is forced + in this case. + +res_pjproject +------------------ + * Added the "cache_pools" option to pjproject.conf. Disabling the option + helps track down pool content mismanagement when using valgrind or + MALLOC_DEBUG. The cache gets in the way of determining if the pool contents + are used after free and who freed it. + +res_pjsip_notify +------------------ + * Extend the PJSIPNotify AMI command to send an in-dialog notify on a + channel. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 15.2.0 to Asterisk 15.3.0 ------------ +------------------------------------------------------------------------------ + +Core +------------------ + * During dialplan reload log messages are produced for each context, + extension and include. These messages are no longer printed by the + verbose loggers, they are now only logged as debug messages. + +app_confbridge +------------------ + * Added the Muted header to the ConfbridgeJoin AMI event to indicate the + participant's starting mute status. + + * Made the AMI ConfbridgeList action's ConfbridgeList events output all + the standard channel snapshot headers instead of a few hand-coded channel + snapshot headers. The benefit is that the CallerIDName gets disruptive + characters like CR, LF, Tab, and a few others escaped. However, an empty + CallerIDName is now output as "" instead of "". + +app_followme +------------------ + * Added a new prompt, connecting-prompt, which will be played + (if configured) to the "winner" callee before connecting the call. + +res_pjsip +------------------ + * Users who are matching endpoints by SIP header need to reevaluate their + global "endpoint_identifier_order" option in light of the "ip" endpoint + identifier method split into the "ip" and "header" endpoint identifier + methods. + + * The pjsip_transport_event feature introduced in 15.1.0 has been refactored. + Any external modules that may have used that feature (highly unlikey) will + need to be changed as the API has been altered slightly. + +res_pjsip_endpoint_identifier_ip +------------------ + * The endpoint identifier "ip" method previously recognized endpoints either + by IP address or a matching SIP header. The "ip" endpoint identifier method + is now split into the "ip" and "header" endpoint identifier methods. The + "ip" endpoint identifier method only matches by IP address and the "header" + endpoint identifier method only matches by SIP header. The split allows the + user to control the relative priority of the IP address and the SIP header + identification methods in the global "endpoint_identifier_order" option. + e.g., If you have two type=identify sections where one matches by IP address + for endpoint alice and the other matches by SIP header for endpoint bob then + you can now predict which endpoint is matched when a request comes in that + matches both. + +res_pjsip_pubsub +------------------ + * In an earlier release, inbound registrations on a reliable transport + were pruned on Asterisk restart since the TCP connection would have + been torn down and become unusable when Asterisk stopped. This same + process is now also applied to inbound subscriptions. Since this + required the addition of a new column to the ps_subscription_persistence + realtime table, users who store their subscriptions in a database will + need to run the "alembic upgrade head" process to add the column to + the schema. + +res_pjsip_transport_management +------------------ + * Since res_pjsip_transport_management provides several attack + mitigation features, its functionality moved to res_pjsip and + this module has been removed. This way the features will always + be available if res_pjsip is loaded. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 15.1.0 to Asterisk 15.2.0 ------------ +------------------------------------------------------------------------------ + +Core +------------------ + * Added the "cache_media_frames" option to asterisk.conf. Disabling the option + helps track down media frame mismanagement when using valgrind or + MALLOC_DEBUG. The cache gets in the way of determining if the frame is + used after free and who freed it. NOTE: This option has no effect when + Asterisk is compiled with the LOW_MEMORY compile time option enabled because + the cache code does not exist. + +chan_sip +------------------ + * Calls to invalid extensions are now reported as an ACL failure security event + "no_extension_match". + +res_rtp_asterisk +------------------ + * The X.509 certificate used for DTLS negotation can now be automatically + generated. This is supported by res_pjsip by specifying + "dtls_auto_generate_cert = yes" on a PJSIP endpoint. For chan_sip, you + would set "dtlsautogeneratecert = yes" either in the [general] section of + sip.conf or on a specific peer. + +res_pjsip +------------------ + * The "identify_by" on endpoints can now be set to "ip" to restrict an endpoint + being matched based only on IP address. To ensure no behavior change the + default has been changed to "username,ip". + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 15.0.0 to Asterisk 15.1.0 ------------ +------------------------------------------------------------------------------ + +res_pjsip +------------------ + * The "remove_existing" option now allows a registration to succeed by + displacing any existing contacts that now exceed the "max_contacts" count. + Any removed contacts are the next to expire. The behaviour change is + beneficial when "rewrite_contact" is enabled and "max_contacts" is greater + than one. The removed contact is likely the old contact created by + "rewrite_contact" that the device is refreshing. + +AMI +------------------ + * Added a new CancelAtxfer action that cancels an attended transfer. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14 to Asterisk 15 -------------------- +------------------------------------------------------------------------------ + +app_queue +------------------ + * PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has + been defined. + + * A new option, "announce-position-only-up," has been added that, when set to + yes, causes position announcements to only be played when the caller's + queue position has improved since the last time that we annouced their + position. This default is no. + +Build System +------------------ + * '--with-pjproject-bundled' is now the default when running ./configure + It can be disabled with '--without-pjproject-bundled'. + + * A '--with-download-cache' option is now available which is equivalent to + setting '--with-sounds-cache' and '--with-externals-cache' to the same + value. The download cache can also be set via the AST_DOWNLOAD_CACHE + environment variable. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14.6.0 to Asterisk 14.7.0 ------------ +------------------------------------------------------------------------------ + +res_pjsip +------------------ + * The "external_media_address" on transports is now resolved using dnsmgr and + when dnsmgr refreshes are enabled will be automatically updated with the new + IP address of a given hostname. + + * A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to receive + unsolicited MWI NOTIFY requests and make them available to other modules via + the stasis message bus. + +res_musiconhold +------------------ + * By default, when res_musiconhold reloads or unloads, it sends a HUP signal + to custom applications (and all descendants), waits 100ms, then sends a + TERM signal, waits 100ms, then finally sends a KILL signal. An application + which is interacting with an external device and/or spawns children of its + own may not be able to exit cleanly in the default times, expecially if sent + a KILL signal, or if it's children are getting signals directly from + res_musiconhoild. To allow extra time, the 'kill_escalation_delay' + class option can be used to set the number of milliseconds res_musiconhold + waits before escalating kill signals, with the default being the current + 100ms. To control to whom the signals are sent, the "kill_method" + class option can be set to "process_group" (the default, existing behavior), + which sends signals to the application and its descendants directly, or + "process" which sends signals only to the application itself. + + * New dialplan function PJSIP_DTMF_MODE added to get or change the DTMF mode + of a channel on a per-call basis. + +res_xmpp +----------------- + * OAuth 2.0 authentication is now supported when contacting Google. Follow the + instructions in xmpp.conf.sample to retrieve and configure the necessary + tokens. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14.5.0 to Asterisk 14.6.0 ------------ +------------------------------------------------------------------------------ + +app_voicemail +------------------ + * A new global option "imap_poll_logout" was added to specify whether need to + disconnect from the IMAP server after polling of mailboxes. + Default: no + +res_pjsip +------------------ + * A new endpoint option "refer_blind_progress" was added to turn off notifying + the progress details on Blind Transfer. If this option is not set then + the chan_pjsip will send NOTIFY "200 OK" immediately after "202 Accepted". + On default is enabled. + Some SIP phones like Mitel/Aastra or Snom keep the line busy until + receive "200 OK". + + * A new endpoint option "notify_early_inuse_ringing" was added to control + whether to notify dialog-info state 'early' or 'confirmed' on Ringing + when already INUSE. + + * The endpoint option 'dtmf_mode' has a new option 'auto_dtmf' added. This + mode works similar to 'auto' except uses DTMF INFO as fallback instead of + INBAND. + +res_agi +------------------ + * The EAGI() application will now look for a dialplan variable named + EAGI_AUDIO_FORMAT and use that format with the 'enhanced' audio pipe that + EAGI provides. If not specified, it will continue to use the default signed + linear (slin). + +chan_pjsip +------------------ + * When dialing an endpoint directly or using the PJSIP_DIAL_CONTACTS dialplan + function any contact which is considered unreachable due to qualify being + enabled will no longer be called. + + * The asymmetric_rtp_codec option now also controls whether chan_pjsip will + send media as-is without transcoding if the codec has been negotiated in the + SDP. If set to "no" then Asterisk will only ever send the preferred codec + from the SDP, unless the remote side sends a different codec and we will + switch to match. + +Build System +------------------ + * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which can be used + to pass arbitrary options to the bundled pjproject configure. + + * Automatically set the bundled pjproject configure --host and --build + options to match those supplied for the asterisk configure. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------ +------------------------------------------------------------------------------ + +res_rtp_asterisk +------------------ + * Added the stun_blacklist option to rtp.conf. Some multihomed servers have + IP interfaces that cannot reach the STUN server specified by stunaddr. + Blacklist those interface subnets from trying to send a STUN packet to find + the external IP address. Attempting to send the STUN packet needlessly + delays processing incoming and outgoing SIP INVITEs because we will wait + for a response that can never come until we give up on the response. + Multiple subnets may be listed. + +Logging +------------------- + * Added logger_queue_limit to the configuration options. + All log messages go to a queue serviced by a single thread + which does all the IO. This setting controls how big that + queue can get (and therefore how much memory is allocated) + before new messages are discarded. + The default is 1000. + +res_pjsip_config_wizard +------------------ + * Two new parameters have been added to the pjsip config wizard. + Setting 'sends_line_with_registrations' to true will cause the wizard + to skip the creation of an identify object to match incoming requests + to the endpoint and instead add the line and endpoint parameters to + the outbound registration object. + Setting 'outbound_proxy' is a shortcut for adding individual + endpoint/outbound_proxy, aor/outbound_proxy and registration/outbound_proxy + parameters. + +res_hep_rtcp +------------------ + * If the 'call-id' value is specified for the uuid_type option and a + chan_sip channel is used the resulting HEP traffic will now contain the + SIP Call-ID instead of the Asterisk channel name. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------ +------------------------------------------------------------------------------ + +Build System +------------------ + * LOW_MEMORY no longer has an effect on Asterisk ABI. Symbols that were + previously suppressed by LOW_MEMORY are now replaced by stub functions. + Asterisk built with LOW_MEMORY can now successfully load binary modules + built without LOW_MEMORY and vice versa. + + * RADIUS backends for CEL and CDR can now also be built using the radcli + client library, in addition to the existing support for building them + using either freeradius or radiusclient-ng. + +Core +------------------ + * ASTERISK_REGISTER_FILE was no longer useful and has been removed. Sources + which use mtx_prof must now manually declare and initialize the variable. + +chan_sip +------------------ + * If an offer is received with optional SRTP (a media stream with RTP/AVP but + which contains a crypto line) chan_sip will now accept it and enable SRTP. + If you would like to do optional SRTP on outbound you will need to create + a dialplan that dials with it enabled initially and if it fails fall back to + without. + +res_pjsip +------------------ + * Added endpoint configuration parameter "preferred_codec_only". + This allow asterisk response to a SIP invite with the single most + preferred codec rather than advertising all joint codec capabilities. + This limits the other side's codec choice to exactly what we prefer. + +cdr_radius +------------------ + * To fix a memory leak the syslog channel is now empty if it has not been set + and used by a syslog channel in the logger. + +cel_radius +------------------ + * To fix a memory leak the syslog channel is now empty if it has not been set + and used by a syslog channel in the logger. + +RTP +------------------ + * New setting "rtp_pt_dynamic = 35" in asterisk.conf: + Normally the Dynamic RTP Payload Type numbers are 96-127, which allow just 32 + formats. To avoid the message "No Dynamic RTP mapping available", the range + was changed to 35-63,96-127. This is allowed by RFC 3551 section 3. However, + when you use more than 32 formats and calls are not accepted by a remote + implementation, please report this and go back to rtp_pt_dynamic = 96. + + * A new setting, "rtp_use_dynamic", has been added in asterisk.conf". When set + to "yes" RTP dynamic payload types are assigned dynamically per RTP instance. + When set to "no" RTP dynamic payload types are globally initialized to pre- + designated numbers and function similar to static payload types. + +app_originate +------------------ + * Added support to gosub predial routines on both original channel and on the + created channel using options parameter (like app_dial) B() and b(). This + allows for adding variables to newly created channel or, e.g. setting callerid. + +CLI Commands +------------------ + * 'dialplan show' output will now show [config_file:line_number] instead of + [registrar] when that information is available. Currently only extensions + registered by pbx_config when loading/reloading will use this format. + +app_queue +------------------ + * Add 'QueueUpdate' application which can be used to track outbound calls + using app_queue. + +pbx_spool +------------------ + * Asterisk will now set the AST_OUTGOING_ATTEMPT channel variable so that + attempt-specific behavior is possible. This is a 1-based number that + simply increases by 1 for each attempt. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------ +------------------------------------------------------------------------------ + +AMI +------------------ + * The 'PJSIPShowEndpoint' command's respone event of 'IdentifyDetail' now + contains a new optional parameter, 'MatchHeader', mapping to the new + configuration option 'match_header' for the corresponding 'identify' object. + It should be noted that since 'match_header' takes in a key: value pair, the + event parameter will contain a ':' as well. + +app_record +------------------ + * Added new 'u' option to Record() application which prevents Asterisk from + truncating silence from the end of recorded files. + +res_pjsip_outbound_registration +------------------ + * Outbound registrations are now refreshed when res_stun_monitor detects + a network change event has happened. + The 'pjsip send (un)register' CLI commands were updated to accept '*all' + as an argument to operate on all registrations. + The 'PJSIP(Un)Register' AMI commands were updated to also accept '*all'. + +app_voicemail +------------------ + * The 'Comedian Mail' prompts can now be overriden using the 'vm-login' and + 'vm-newuser' configuration options in voicemail.conf. + + * Added 'fromstring' field to the voicemail boxes. If set, it will override + the global 'fromstring' field on a per-mailbox basis. + +func_channel +------------------ + * Added CHANNEL(callid) to retrieve the call log tag associated with the + channel. e.g., [C-00000000] Dialplan now has access to the call log + search key associated with the channel so it can be saved in case there + is a problem with the call. + +res_pjsip +------------------ + * A new transport parameter 'symmetric_transport' has been added. + When a request from a dynamic contact comes in on a transport with this + option set to 'yes', the transport name will be saved and used for + subsequent outgoing requests like OPTIONS, NOTIFY and INVITE. It's + saved as a contact uri parameter named 'x-ast-txp' and will display with + the contact uri in CLI, AMI, and ARI output. On the outgoing request, + if a transport wasn't explicitly set on the endpoint AND the request URI + is not a hostname, the saved transport will be used and the 'x-ast-txp' + parameter stripped from the outgoing packet. To facilitate recreation of + subscriptions on asterisk restart, a new column 'contact_uri' needed to be + added to the ps_subcsription_persistence table. Since new columns were + added to both transport and subscription_persistence, an alembic upgrade + should be run to bring the database tables up to date. + + * A new option, allow_overlap, has been added to endpoints which allows + overlap dialing functionality to be enabled or disabled. The option defaults + to enabled. + +res_pjsip_transport_websocket +------------------ + * Removed non-secure websocket support. Firefox and Chrome have not allowed + non-secure websockets for quite some time so this shouldn't be an issue + for people. Attempting to use a non-secure websocket may or may not work + when Asterisk attempts to send SIP requests to do something like initiate + call hangup. + +res_pjsip_endpoint_identifier_ip +------------------ + * A new option has been added to the 'identify' configuration object, + 'match_header'. The 'match_header' attribute should contain a SIP + header: value pair that, When set, will cause inbound requests that contain + the matching SIP header/value pair to be associated with the corresponding + endpoint. This option is cumulative with the 'match' option, so that if + either option matches the request, the request is associated with the + endpoint. + + In a future release, this module will be renamed to something more + appropriate, as it now matches inbound requests on more than just IP + address. + +res_rtp_asterisk +----------------- + * The RTP layer of Asterisk now has support for RFC 5761: "Multiplexing RTP + Data and Control Packets on a Single Port." So far, the only channel driver + that supports this feature is chan_pjsip. You can set "rtcp_mux = yes" on + a PJSIP endpoint in pjsip.conf to enable the feature. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14.2.0 to Asterisk 14.3.0 ------------ +------------------------------------------------------------------------------ + +res_pjproject +------------------ + * Added new CLI command "pjproject set log level". The new command allows + the maximum PJPROJECT log levels to be adjusted dynamically and + independently from the set debug logging level like many other similar + module debug logging commands. + + * Added new companion CLI command "pjproject show log level" to allow the + user to see the current maximum pjproject logging level. + + * Added new pjproject.conf startup section "log_level' option to set the + initial maximum PJPROJECT logging level. + +res_pjsip_outbound_registration +------------------ + * Statsd no longer logs redundant status PJSIP.registrations.state changes + for internal state transitions that don't change the reported public status + state. + +res_pjsip_registrar +------------------ + * The PJSIPShowRegistrationInboundContactStatuses AMI command has been added + to return ContactStatusDetail events as opposed to + PJSIPShowRegistrationsInbound which just a dumps every defined AOR. + +res_pjsip +------------------ + * Six existing contact fields have been added to the end of the + ContactStatusDetail AMI event: + ID, AuthenticateQualify, OutboundProxy, Path, QualifyFrequency and + QualifyTimeout. Existing fields have not been disturbed. + +res_pjsip_endpoint_identifier_ip +------------------ + * SRV lookups can now be done on provided hostnames to determine additional + source IP addresses for requests. This is configurable using the + "srv_lookups" option on the identify and defaults to "yes". + +ARI +------------------ + * The 'ari set debug' command has been enhanced to accept 'all' as an + application name. This allows dumping of all apps even if an app + hasn't registered yet. + + * 'ari set debug' now displays requests and responses as well as events. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14.1.0 to Asterisk 14.2.0 ------------ +------------------------------------------------------------------------------ + +AMI +------------------ + * Events that reference a bridge may now contain two new optional fields: + - 'BridgeVideoSourceMode': the video source mode for the bridge. + Can be one of 'none', 'talker', or 'single'. + - 'BridgeVideoSource': the unique ID of the channel that is the video + source in this bridge, if one exists. + + * A new event, BridgeVideoSourceUpdate, has been added with a class + authorization of CALL. The event is raised when the video source changes + in a multi-party mixing bridge. + +ARI +------------------ + * The bridges resource now exposes two new operations: + - POST /bridges/{bridgeId}/videoSource/{channelId}: Set a video source in a + multi-party mixing bridge + - DELETE /bridges/{bridgeId}/videoSource: Remove the set video source, + reverting to talk detection for the video source + + * The bridge model in any returned response or event now contains the following + optional fields: + - video_mode: the video source mode for the bridge. Can be one of 'none', + 'talker', or 'single'. + - video_source_id: the unique ID of the channel that is the video source + in this bridge, if one exists. + + * A new event, BridgeVideoSourceChanged, has been added for bridges. + Applications subscribed to a bridge will receive this event when the source + of video changes in a mixing bridge. + + * The ARI major version has been bumped. There are not any known breaking changes + in ARI. The major version has been bumped because otherwise we can end up with + overlapping version numbers between different Asterisk versions. Now each major + version of Asterisk will bring with it a change in the major version of ARI. + The ARI version in Asterisk 14 is now 2.0.0. + +res_pjsip +------------------ + * Automatic dual stack support is now implemented. Depending on DNS resolution + and the transport used for sending a message the SIP signaling and SDP will + be updated with the correct IP address and protocol version. This means that + the rtp_ipv6 and t38_udptl_ipv6 options no longer have any effect. The + res_pjsip_multihomed module has also been moved into core res_pjsip to ensure + that messages are updated with the correct address information in all cases. + +chan_pjsip +------------------ + * The default behavior for RTP codecs has been changed. The sending codec will + now match the receiving codec. This can be turned off and behavior reverted + to asymmetric using the "asymmetric_rtp_codec" endpoint option. If this + option is set then the sending and received codec are allowed to differ. + +CLI Commands +------------------ + * Three new CLI commands have been added for ARI: + - ari show apps: + Displays a listing of all registered ARI applications. + - ari show app : + Display detailed information about a registered ARI application. + - ari set debug : + Enable/disable debugging of an ARI application. When debugged, verbose + information will be sent to the Asterisk CLI. + + +Queue +------------------ + * A new dialplan variable, ABANDONED, is set when the call is not answered + by an agent. + +res_ari +------------------ + * The configuration file ari.conf now supports a channelvars option, which + specifies a list of channel variables to include in each channel-oriented + ARI event. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 14.0.0 to Asterisk 14.1.0 ------------ +------------------------------------------------------------------------------ + +Build System +------------------ + * The res_digium_phone, codec_g729a, codec_silk, codec_siren7 and + codec_siren14 binary modules hosted at downloads.digium.com can now be + automatically downloaded and installed during the Asterisk install + process. If selected in menuselect, when 'make install' is run, the + script will check the downloads site for a new version and download + and install it if needed. The '--with-externals-cache' option to + ./configure can be used to specify a location to cache the latest + tarballs so they don't have to be re-downloaded for every install. + +app_voicemail +------------------ + * Added "tps_queue_high" and "tps_queue_low" options. + The options can modify the taskprocessor alert levels for this module. + Additional information can be found in the sample configuration file at + config/samples/voicemail.conf.sample. + +res_pjsip_mwi +------------------ + * Added "mwi_tps_queue_high" and "mwi_tps_queue_low" global configuration + options to tune taskprocessor alert levels. + + * Added "mwi_disable_initial_unsolicited" global configuration option + to disable sending unsolicited MWI to all endpoints on startup. + Additional information can be found in the sample configuration file at + config/samples/pjsip.conf.sample. + +chan_pjsip +------------------ + * A new dialplan function, PJSIP_SEND_SESSION_REFRESH, has been added. When + invoked, a re-INVITE or UPDATE request will be sent immediately to the + endpoint underlying the channel. When used in combination with the existing + dialplan function PJSIP_MEDIA_OFFER, this allows the formats on a PJSIP + channel to be re-negotiated and updated after session set up. + +res_pjsip +------------------ + * A new endpoint configuration parameter 'contact_user' has been added which + when set will override the default user set on Contact headers in outgoing + requests. + + * If you are using a sorcery realtime backend to store global res_pjsip + options (ps_globals table) then you now have to do a res_pjsip reload for + changes to these options to take effect. If you are using pjsip.conf to + configure these options then you already had to do a reload after making + changes. + + * Added "ignore_uri_user_options" global configuration option for + compatibility with an ITSP that sends URI user field options. When enabled + the user field is truncated at the first semicolon. + Example: + URI: "sip:1235557890;phone-context=national@x.x.x.x;user=phone" + The user field is "1235557890;phone-context=national" + Which is truncated to this: "1235557890" + + Note: The caller-id and redirecting number strings obtained from incoming + SIP URI user fields are now always truncated at the first semicolon. + +res_rtp_asterisk +------------------ + * An option, ice_blacklist, has been added which allows certain subnets to be + excluded from local ICE candidates. + +app_confbridge +------------------ + * Some sounds played into the bridge are played asynchronously. This, for + instance, allows a channel to immediately exit the ConfBridge without having + to wait for a leave announcement to play. + +app_dial +------------------ + * Added the "Q" option which sets the Q.850/Q.931 cause on unanswered channels + when another channel answers the call. The default of ANSWERED_ELSEWHERE + is unchanged. + +res_ari +------------------ + * ARI events will all now include a new field in the root of the JSON message, + 'asterisk_id'. This will be the unique ID for the Asterisk system + transmitting the event. The value can be overridden using the 'entityid' + setting in asterisk.conf. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13 to Asterisk 14 -------------------- +------------------------------------------------------------------------------ + +AMI +----------------- + * A new event, "DialState" has been added. This is similar to "DialBegin" and + "DialEnd" in that it tracks the state of a dialed call. The difference is that + this indicates some intermediate state change in the dial attempt, such as + "RINGING", "PROGRESS", or "PROCEEDING". + +ARI +----------------- + * A new ARI method has been added to the channels resource. "create" allows for + you to create a new channel and place that channel into a Stasis application. + This is similar to origination except that the specified channel is not + dialed. This allows for an application writer to create a channel, perform + manipulations on it, and then delay dialing the channel until later. + + * To complement the "create" method, a "dial" method has been added to the + channels resource in order to place a call to a created channel. + + * All operations that initiate playback of media on a resource now support + a list of media URIs. The list of URIs are played in the order they are + presented to the resource. A new event, "PlaybackContinuing", is raised when + a media URI finishes but before the next media URI starts. When a list is + played, the "Playback" model will contain the optional attribute + "next_media_uri", which specifies the next media URI in the list to be played + back to the resource. The "PlaybackFinished" event is raised when all media + URIs are done. + + * Stored recordings now allow for the media associated with a stored recording + to be retrieved. The new route, GET /recordings/stored/{name}/file, will + transmit the raw media file to the requester as binary. + + + * "Dial" events have been modified to not only be sent when dialing begins and ends. + They now are also sent for intermediate states, such as "RINGING", "PROGRESS", and + "PROCEEDING". + +Applications +------------------ + +BridgeAdd +------------------ + * A new application in Asterisk, this will join the calling channel + to an existing bridge containing the named channel prefix. + +ChanSpy +------------------ + * Added the 'l' option, which forces ChanSpy's audiohook to use a long queue + to store the audio frames. This option is useful if audio loss is + experienced when using ChanSpy, but may introduce some delay in the audio + feed on the listening channel. + +Codecs +------------------ + * Added format attribute negotiation for the iLBC audio codec. Format attribute + negotiation is provided by the res_format_attr_ilbc module. iLBC 20 is the + default now. Falls back to iLBC 30, when the remote party requests this. + +ConfBridge +------------------ + * Added the ability to pass options to MixMonitor when recording is used with + ConfBridge. This includes the addition of the following configuration + parameters for the 'bridge' object: + - record_file_timestamp: whether or not to append the start time to the + recorded file name + - record_options: the options to pass to the MixMonitor application + - record_command: a command to execute when recording is finished + Note that these options may also be with the CONFBRIDGE function. + +ControlPlayback +------------------ + * Remote files can now be retrieved and played back. See the Playback + dialplan application for more details. + +FollowMe +------------------ + * It is now possible to disable the prompt from a callee by setting + 'enable_callee_prompt = no' in followme.conf. + +Playback +------------------ + * Remote files can now be retrieved and played back via the Playback and other + media playback dialplan applications. This is done by directly providing + the URL to play to the dialplan application: + same => n,Playback(http://1.1.1.1/howler-monkeys-fl.wav) + Note that unlike 'normal' media files, the entire URI to the file must be + provided, including the file extension. Currently, on HTTP and HTTPS URI + schemes are supported. + +Queue +------------------- + * Added field ReasonPause on QueueMemberStatus if set when paused, the reason + the queue member was paused. + + * Added field LastPause on QueueMemberStatus for time when started the last + pause for a queue member. + + * Show the time when started the last pause for queue member on CLI for command + 'queue show'. + +SMS +------------------ + * Added the 'n' option, which prevents the SMS from being written to the log + file. This is needed for those countries with privacy laws that require + providers to not log SMS content. + + +Channel Drivers +------------------ + +chan_dahdi +------------------ + * The CALLERID(ani2) value for incoming calls is now populated in featdmf + signaling mode. The information was previously discarded. + + * Added the force_restart_unavailable_chans compatibility option. When + enabled it causes Asterisk to restart the ISDN B channel if an outgoing + call receives cause 44 (Requested channel not available). + +chan_iax2 +------------------ + * The iax.conf forcejitterbuffer option has been removed. It is now always + forced if you set iax.conf jitterbuffer=yes. If you put a jitter buffer + on a channel it will be on the channel. + + * A new configuration parameters, 'calltokenexpiration', has been added that + controls the duration before a call token expires. Default duration is 10 + seconds. Setting this to a higher value may help in lagged networks or those + experiencing high packet loss. + + * Plaintext auth mode is deprecated and removed from possible default modes. + +chan_rtp (was chan_multicast_rtp) +------------------ + * Added unicast RTP support and renamed chan_multicast_rtp to chan_rtp. + + * The format for dialing a unicast RTP channel is: + UnicastRTP/[/[]] + Where is something like '127.0.0.1:5060'. + Where are in standard Asterisk flag options format: + c() - Specify which codec/format to use such as 'ulaw'. + e() - Specify which RTP engine to use such as 'asterisk'. + + * New options were added for a multicast RTP channel. The format for + dialing a multicast RTP channel is: + MulticastRTP//[/[][/[]]] + Where can be either 'basic' or 'linksys'. + Where is something like '224.0.0.3:5060'. + Where is something like '127.0.0.1:5060'. + Where are in standard Asterisk flag options format: + c() - Specify which codec/format to use such as 'ulaw'. + i(
) - Specify the interface address from which multicast RTP + is sent. + l() - Set whether packets are looped back to the sender. The + enable value can be 0 to set looping to off and non-zero to set + looping on. + t() - Set the time-to-live (TTL) value for multicast packets. + +chan_sip +------------------ + * New 'rtpbindaddr' global setting. This allows a user to define which + ipaddress to bind the rtpengine to. For example, chan_sip might bind + to eth0 (10.0.0.2) but rtpengine to eth1 (192.168.1.10). + + * DTLS related configuration options can now be set at a general level. + Enabling DTLS support, though, requires enabling it at the user + or peer level. + + * Added the possibility to set the From: header through the the SIP dial + string (populating the fromuser/fromdomain fields), complementing the + [!dnid] option for the To: header that has existed since 1.6.0 (1d6b192). + NOTE: This is again separated by an exclamation mark, so the To: header may + not contain one of those. + + * Session-Timers (RFC 4028) work for TCP (and TLS) transports as well now. + Previously Asterisk dropped calls only with UDP transports. However with + longer international calls via TCP, the SIP channel might break, because + all hops on the Internet route must stay online (have not a single power + outage, for example). Therefore with Session-Timers enabled (which are + enabled at default), you might see additional dropped calls. Consequently + please, consider to go for session-timers=refuse in your sip.conf. + +chan_pjsip +------------------ + * New 'user_eq_phone' endpoint setting. This adds a 'user=phone' parameter + to the request URI and From URI if the user is determined to be a phone + number. + + * New 'moh_passthrough' endpoint setting. This will pass hold and unhold + requests through using SIP re-invites with sendonly and sendrecv accordingly. + + * Added the pjsip.conf system type disable_tcp_switch option. The option + allows the user to disable switching from UDP to TCP transports described + by RFC 3261 section 18.1.1. + + * New 'line' and 'endpoint' options added on outbound registrations. This + allows some identifying information to be added to the Contact of the + outbound registration. If this information is present on messages received + from the remote server the message will automatically be associated with the + configured endpoint on the outbound registration. + + +Core +------------------ + * The core of Asterisk uses a message bus called "Stasis" to distribute + information to internal components. For performance reasons, the message + distribution was modified to make use of a thread pool instead of a + dedicated thread per consumer in certain cases. The initial settings for + the thread pool can now be configured in 'stasis.conf'. + + * A new core DNS API has been implemented which provides a common interface + for DNS functionality. Modules that use this functionality will require that + a DNS resolver module is loaded and available. + + * Modified processing of command-line options to first parse only what + is necessary to read asterisk.conf. Once asterisk.conf is fully loaded, + the remaining options are processed. The -X option now applies to + asterisk.conf only. To enable #exec for other config files you must + set execincludes=yes in asterisk.conf. Any other option set on the + command-line will now override the equivalent setting from asterisk.conf. + + * The TLS core in Asterisk now supports X.509 certificate subject alternative + names. This way one X.509 certificate can be used for hosts that can be + reached under multiple DNS names or for multiple hosts. + + * The Asterisk logging system now supports JSON structured logging. Log + channels specified in logger.conf or added dynamically via CLI commands now + support an optional specifier prior to their levels that determines their + formatting. To set a log channel to format its entries as JSON, a formatter + of '[json]' can be set, e.g., + full => [json]debug,verbose,notice,warning,error + + * The core now supports a 'media cache', which stores temporary media files + retrieved from external sources. CLI commands have been added to manipulate + and display the cached files, including: + - 'media cache show ' - show all cached media files, or details about + one particular cached media file + - 'media cache refresh ' - force a refresh of a particular media file + in the cache + - 'media cache delete ' - remove an item from the cache + - 'media cache create ' - retrieve a URI and store it in the cache + + * The ability for device state hints to be automatically created as a result of + device state changes now exists in the PBX. This functionality is referred to + as "autohints" and is configurable in extensions.conf by placing "autohints=yes" + in the context. If enabled a device state hint will be automatically created + with the name of the device. + +* If Asterisk is built with systemd support, and run under systemd, it will + notify systemd of its state using sd_notify. Use 'Type=notify' in + asterisk.service. + +Functions +------------------ + * The func_odbc global option "single_db_connection" default value has been + changed to 'no'. + + +Formats +------------------ + * New module format_ogg_speex added which supports Speex codec inside + Ogg containers (filename extension .spx). + + +CHANNEL +------------------ + * Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for + the hold status of a channel. + +CURL +------------------ + * The CURL function now supports a write option, which will save the retrieved + file to a location on disk. As an example: + same => n,Set(CURL(https://1.1.1.1/foo.wav)=/tmp/foo.wav) + will save 'foo.wav' to /tmp. + +DTMF Features +------------------ + * The transferdialattempts default value has been changed from 1 to 3. The + transferinvalidsound has been changed from "pbx-invalid" to + "privacy-incorrect". These were changed to make DTMF transfers be more + user-friendly by default. + + +Resources +------------------ + +res_http_media_cache +------------------ + * A backend for the core media cache, this module retrieves media files from + a remote HTTP(S) server and stores them in the core media cache for later + playback. + +res_musiconhold +------------------ + * Added sort=randstart to the sort options. It sorts the files by name and + then chooses the first file to play at random. + * Added preferchannelclass=no option to prefer the application-passed class + over the channel-set musicclass. This allows separate hold-music from + application (e.g. Queue or Dial) specified music. + +res_resolver_unbound +------------------ + * Added a res_resolver_unbound module which uses the libunbound resolver library + to perform DNS resolution. This module requires the libunbound library to be + installed in order to be used. + +res_pjsip +------------------ + * A new SIP resolver using the core DNS API has been implemented. This relies on + external SIP resolver support in PJSIP which is only available as of PJSIP + 2.4. If this support is unavailable the existing built-in PJSIP SIP resolver + will be used instead. The new SIP resolver provides NAPTR support, improved + SRV support, and AAAA record support. + +res_pjsip_info_empty +-------------------- + * A new module that can respond to empty Content-Type INFO packets during call. + Some SBCs will terminate a call if their empty INFO packets are not responded + to within a predefined time. + +res_pjsip_outbound_registration +------------------------------- +* A new 'fatal_retry_interval' option has been added to outbound registration. + When set (default is zero), and upon receiving a failure response to an + outbound registration, registration is retried at the given interval up to + 'max_retries'. + +res_pjsip_outbound_publish +------------------ + * Added a new multi_user option that when set to 'yes' allows a given configuration + to be used for multiple users. + + +CEL Backends +------------------ + +cel_pgsql +------------------ + * Added a new option, 'usegmtime', which causes timestamps in CEL events + to be logged in GMT. + + * Added support to set schema where located the table cel. This settings is + configurable for cel_pgsql via the 'schema' in configuration file + cel_pgsql.conf. + + +CDR Backends +------------------ + +cdr_adaptive_odbc +------------------ + * Added the ability to set the character to quote identifiers. This + allows adding the character at the start and end of table and column + names. This setting is configurable for cdr_adaptive_odbc via the + quoted_identifiers in configuration file cdr_adaptive_odbc.conf. + +cdr_odbc +------------------ + * Added a new configuration option, "newcdrcolumns", which enables use of the + post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'. + +cdr_csv +------------------ + * Added a new configuration option, "newcdrcolumns", which enables use of the + post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ---------- +------------------------------------------------------------------------------ + +chan_dahdi +------------------ + * Added "faxdetect_timeout" option. + The option determines how many seconds into a call before faxdetect + is disabled for the call. Setting the value to zero disables the timeout. + +res_pjsip +------------------ + * Added "fax_detect_timeout" to endpoint. + The option determines how many seconds into a call before fax_detect + is disabled for the call. Setting the value to zero disables the timeout. + + * Added "subscribe_context" to endpoint. + If specified, incoming SUBSCRIBE requests will be searched for the matching + extension in the indicated context. If no "subscribe_context" is specified, + then the "context" setting is used. + +res_rtp_asterisk +------------------ + * The DTLS part in Asterisk now supports Perfect Forward Secrecy (PFS). + Enabling PFS is attempted by default, and is dependent on the configuration + of the module using TLS. + - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not + specify a ECDHE cipher suite in sip.conf, for example: + dtlscipher=AES128-SHA + - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters + into the private key file, e.g., sip.conf dtlsprivatekey. For example: + openssl dhparam -out ./dh.pem 2048 + - Because clients expect the server to prefer PFS, and because OpenSSL sorts + its cipher suites by bit strength, see "openssl ciphers -v DEFAULT". + Consider re-ordering your cipher suites in the respective configuration + file. For example: + dtlscipher=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 + which forces PFS and requires at least DTLS 1.2. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.9.0 to Asterisk 13.10.0 ----------- +------------------------------------------------------------------------------ + +Core +------------------ + * A channel variable FORWARDERNAME is now set which indicates which channel + was responsible for a forwarding requests received on dial attempt. + +func_odbc +------------------ + * Added new global option "single_db_connection". + Enabling this option func_odbc will use a single database connection per DSN. + This option is enabled by default. + +res_fax +------------------ + * Added FAXMODE variable to let dialplan know what fax transport was used. + FAXMODE variable is set to either "audio" or "T38". + +res_pjsip +------------------ + * Added "via_addr", "via_port", "call_id" to contacts. + As res_pjsip_nat rewrites contact's address, only the last Via header + can contain the source address of registered endpoint. + Also Call-Id header may contain the source address of registered endpoint. + Added new fields ViaAddress,CallID to AMI event ContactStatus + + * Endpoint IP Access Controls + Added new configuration Endpoint options: + "acl" - list of IP ACL section names in acl.conf + "deny" - List of IP addresses to deny access from + "permit" - List of IP addresses to permit access from + "contact_acl" - List of Contact ACL section names in acl.conf + "contact_deny" - List of Contact header addresses to deny + "contact_permit" - List of Contact header addresses to permit + + * Added "reg_server" to contacts. + If the Asterisk system name is set in asterisk.conf, it will be stored + into the "reg_server" field in the ps_contacts table to facilitate + multi-server setups. + + * When starting Asterisk, received traffic will now be ignored until Asterisk + has loaded all modules and is fully booted. + +res_hep +------------------ + * Added a new option, 'uuid_type', that sets the preferred source of the Homer + correlation UUID. The valid options are: + - call-id: Use the PJSIP SIP Call-ID header value + - channel: Use the Asterisk channel name + The default value is 'call-id'. In the event that a HEP module cannot find a + valid value using the specified 'uuid_type', the module may fallback to a + more readily available source for the correlation UUID. + +res_odbc +------------------ + * A new option has been added, 'max_connections', which sets the maximum number + of concurrent connections to the database. This option defaults to 1 which + returns the behavior to that of Asterisk 13.7 and prior. + +app_confbridge +------------------ + * Added a bridge profile option called regcontext that allows you to + dynamically register the conference bridge name as an extension into + the specified context. This allows tracking down conferences on multi- + server installations via alternate means (DUNDI for example). By default + this feature is not used. + +Codecs +------------------ + * Added the associated format name to 'core show codecs'. + +res_ari_channels +------------------ + * Added 'formats' to channel create/originate to allow setting the allowed + formats for a channel when no originator channel is available. Especially + useful for Local channel creation where no other format information is + available. 'core show codecs' can now be used to look up suitable format + names. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.8.0 to Asterisk 13.9.0 ------------ +------------------------------------------------------------------------------ + +res_parking: + - The dynamic parking lot creation channel variables PARKINGDYNAMIC, + PARKINGDYNCONTEXT, PARKINGDYNEXTEN, and PARKINGDYNPOS are now looked + for in the parker's channel instead of the parked channel. This is only + of significance if the parker uses blind transfer or the DTMF one-step + parking feature. You need to use the double underscore '__' inheritance + for these variables. The indefinite inheritance is also recommended + for the PARKINGEXTEN variable. + +res_pjsip +------------------ + * Added new global option (disable_multi_domain) to pjsip. + Disabling Multi Domain can improve realtime performace by reducing + number of database requsts. + +chan_pjsip +------------------ + * Added 'pjsip show channelstats' CLI command. + +res_pjsip_outbound_publish +------------------ + * Added support for setting the transport used on outbound publish + using the transport configuration option. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.7.0 to Asterisk 13.8.0 ------------ +------------------------------------------------------------------------------ + +res_pjsip_caller_id +------------------ + * Per RFC3325, the 'From' header is now anonymized on outgoing calls when + caller id presentation is prohibited. + +res_pjsip_config_wizard +------------------ + * A new command (pjsip export config_wizard primitives) has been added that + will export all the pjsip objects it created to the console or a file + suitable for reuse in a pjsip.conf file. + +Build System +------------------ + * To help insure that Asterisk is compiled and run with the same known + version of pjproject, a new option (--with-pjproject-bundled) has been + added to ./configure. When specified, the version of pjproject specified + in third-party/versions.mak will be downloaded and configured. When you + make Asterisk, the build process will also automatically build pjproject + and Asterisk will be statically linked to it. Once a particular version + of pjproject is configured and built, it won't be configured or built + again unless you run a 'make distclean'. + + To facilitate testing, when 'make install' is run, the pjsua and pjsystest + utilities and the pjproject python bindings will be installed in + ASTDATADIR/third-party/pjproject. + + The default behavior remains building with the shared pjproject + installation, if any. + +app_confbridge +------------------ + * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state. + + * Added Muted header to AMI ConfbridgeListRooms action response list events + to indicate the muted conference state. + + * Added Muted column to CLI "confbridge list" output to indicate the muted + conference state and made the locked column a yes/no value instead of a + locked/unlocked value. + +REDIRECTING(reason) +------------------ + * The REDIRECTING(reason) value is now treated consistently between + chan_sip and chan_pjsip. + + Both channel drivers match incoming reason values with values documented + by REDIRECTING(reason) and values documented by RFC5806 regardless of + whether they are quoted or not. RFC5806 values are mapped to the + equivalent REDIRECTING(reason) documented value and is set in + REDIRECTING(reason). e.g., an incoming RFC5806 'unconditional' value or a + quoted string version ('"unconditional"') is converted to + REDIRECTING(reason)'s 'cfu' value. The user's dialplan only needs to deal + with 'cfu' instead of any of the aliases. + + The incoming 480 response reason text supported by chan_sip checks for + known reason values and if not matched then puts quotes around the reason + string and assigns that to REDIRECTING(reason). + + Both channel drivers send outgoing known REDIRECTING(reason) values as the + unquoted RFC5806 equivalent. User custom values are either sent as is or + with added quotes if SIP doesn't allow a character within the value as + part of a RFC3261 Section 25.1 token. Note that there are still + limitations on what characters can be put in a custom user value. e.g., + embedding quotes in the middle of the reason string is just going to cause + you grief. + + * Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases. + e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the + 'cfu' value. + +res_pjproject +------------------ + * This module is the successor of res_pjsip_log_forwarder. As well as + handling the log forwarding (which now displays as 'pjproject:0' instead + of 'pjsip:0'), it also adds a 'pjproject show buildopts' command to the CLI. + This displays the compiled-in options of the pjproject installation + Asterisk is currently running against. + + * Another feature of this module is the ability to map pjproject log levels + to Asterisk log levels, or to suppress the pjproject log messages + altogether. Many of the messages emitted by pjproject itself are the result + of errors which Asterisk will ultimately handle so the messages can be + misleading or just noise. A new config file (pjproject.conf) has been added + to configure the mapping and a new CLI command (pjproject show log mappings) + has been added to display the mappings currently in use. + +res_pjsip +------------------ + * Transports are now reloadable. In testing, no in-progress calls were + disrupted if the ip address or port weren't changed, but the possibility + still exists. To make sure there are no unintentional drops, a new option + 'allow_reload', which defaults to 'no' has been added to transport. If + left at the default, changes to the particular transport will be ignored. + If set to 'yes', changes (if any) will be applied. + + * Added new global option (regcontext) to pjsip. When set, Asterisk will + dynamically create and destroy a NoOp priority 1 extension + for a given endpoint who registers or unregisters with us. + + * Endpoints and aors can now be identified by the username and realm in an + incoming Authorization header. To use this feature, add "auth_username" + to your endpoint's "identify_by" list. You can combine "auth_username" + and the original "username" to test both the From/To and Authorization + headers. For endpoints, the order is controlled by the global + "endpoint_identifier_order" setting. For matching aors to an endpoint + for inbound registration, the order is controlled by this option. + + * In conjunction with the "auth_username" change, 3 new options have been + added to the global configuration object that control how many unidentified + requests over a certain period from the same IP address can be received + before a security altert is generated. A new CLI command + "pjsip show unidentified_requests" will list the current candidates. + +res_pjsip_history +------------------ + * A new module, res_pjsip_history, has been added that provides SIP history + viewing/filtering from the CLI. The module is intended to be used on systems + with busy SIP traffic, where existing forms of viewing SIP messages - such + as the res_pjsip_logger - may be inadequate. The module provides two new + CLI commands: + - 'pjsip set history {on|off|clear}' - this enables/disables SIP history + capturing, as well as clears an existing history capture. Note that SIP + packets captured are stored in memory until cleared. As a result, the + history capture should only be used for debugging/viewing purposes, and + should *NOT* be left permanently enabled on a system. + - 'pjsip show history' - displays the captured SIP history. When invoked + with no options, the entire captured history is displayed. Two options + are available: + -- 'entry ' - display a detailed view of a single SIP message in + the history + -- 'where ...' - filter the history based on some expression. For more + information on filtering, view the current CLI help for the + 'pjsip show history' command. + +Voicemail +------------------ + * app_voicemail and res_mwi_external can now be built together. The default + remains to build app_voicemail and not res_mwi_external but if they are + both built, the load order will cause res_mwi_external to load first and + app_voicemail will be skipped. Use 'preload=app_voicemail.so' in + modules.conf to force app_voicemail to be the voicemail provider. + +res_pjsip_sdp_rtp +------------------ + * A new option (bind_rtp_to_media_address) has been added to endpoint which + will cause res_pjsip_sdp_rtp to actually bind the RTP instance to the + media_address as well as using it in the SDP. If set, RTP packets will now + originate from the media address instead of the operating system's "primary" + ip address. + +res_rtp_asterisk +------------------ + * A new configuration section - ice_host_candidates - has been added to + rtp.conf, allowing automatically discovered ICE host candidates to be + overriden. This allows an Asterisk server behind a 1:1 NAT to send its + external IP as a host candidate rather than relying on STUN to discover it. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.6.0 to Asterisk 13.7.0 ------------ +------------------------------------------------------------------------------ + +Codecs +------------------ + * Added format attribute negotiation for the VP8 video codec. Format attribute + negotiation is provided by the res_format_attr_vp8 module. + +ConfBridge +------------------ + * A new "timeout" user profile option has been added. This configures the number + of seconds that a participant may stay in the ConfBridge after joining. When + the time expires, the user is ejected from the conference and CONFBRIDGE_RESULT + is set to "TIMEOUT" on the channel. + +chan_sip +------------------ + * The websockets_enabled option has been added to the general section of + sip.conf. The option is enabled by default to match the previous behavior. + The option should be disabled when using res_pjsip_transport_websockets to + ensure chan_sip will not conflict with PJSIP websockets. + +Dialplan Functions +------------------ + * The HOLD_INTERCEPT dialplan function now actually exists in the source tree. + While support for the events was added in Asterisk 13.4.0, the function + accidentally never made it in. That function is now present, and will cause + the 'hold' raised by a channel to be intercepted and converted into an + event instead. + +res_pjsip_outbound_registration +------------------------------- + * If res_statsd is loaded and a StatsD server is configured, basic statistics + regarding the state of outbound registrations will now be emitted. This + includes: + - A GAUGE statistic for the overall number of outbound registrations, i.e.: + PJSIP.registrations.count + - A GAUGE statistic for the overall number of outbound registrations in a + particular state, e.g.: + PJSIP.registrations.state.Registered + +res_pjsip +------------------ + * The ability to use "like" has been added to the pjsip list and show + CLI commands. For instance: CLI> pjsip list endpoints like abc + + * If res_statsd is loaded and a StatsD server is configured, basic statistics + regarding the state of PJSIP contacts will now be emitted. This includes: + - A GAUGE statistic for the overall number of contacts in a particular + state, e.g.: + PJSIP.contacts.states.Reachable + - A TIMER statistic for the RTT time for each qualified contact, e.g.: + PJSIP.contacts.alice@@127.0.0.1:5061.rtt + +res_sorcery_memory_cache +------------------------ + * A new caching strategy, full_backend_cache, has been added which caches + all stored objects in the backend. When enabled all objects will be + expired or go stale according to the configuration. As well when enabled + all retrieval operations will be performed against the cache instead of + the backend. + +func_callerid +------------------- + * CALLERID(pres) is now documented as a valid alternative to setting both + CALLERID(name-pres) and CALLERID(num-pres) at once. Some channel drivers, + like chan_sip, don't make a distinction between the two: they take the + least public value from name-pres and num-pres. By using CALLERID(pres) + for reading and writing, you touch the same combined value in the dialplan. + The same applies to CONNECTEDLINE(pres), REDIRECTING(orig-pres), + REDIRECTING(to-pres) and REDIRECTING(from-pres). + +res_endpoint_stats +------------------- + * A new module that emits StatsD statistics regarding Asterisk endpoints. + This includes a total count of the number of endpoints, the count of the + number of endpoints in the technology agnostic state of the endpoint - + online or offline - as well as the number of channels associated with each + endpoint. These are recorded as three different GAUGE statistics: + - endpoints.count + - endpoints.state.{unknown|offline|online} + - endpoints.{tech}.{resource}.channels + + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.5.0 to Asterisk 13.6.0 ------------ +------------------------------------------------------------------------------ + +Dialplan Functions +------------------ + * The CHANNEL function, when used on a PJSIP channel, now exposes a 'call-id' + extraction option when using with the 'pjsip' signalling option. It will + return the SIP Call-ID associated with the INVITE request that established + the PJSIP channel. + +ARI +------------------ + * Two new endpoint related events are now available: PeerStatusChange and + ContactStatusChange. In particular, these events are useful when subscribing + to all event sources, as they provide additional endpoint related + information beyond the addition/removal of channels from an endpoint. + + * Added the ability to subscribe to all ARI events in Asterisk, regardless + of whether the application 'controls' the resource. This is useful for + scenarios where an ARI application merely wants to observe the system, + as opposed to control it. There are two ways to accomplish this: + (1) Via the WebSocket connection URI. A new query paramter, 'subscribeAll', + has been added that, when present and True, will subscribe all + specified applications to all ARI event sources in Asterisk. + (2) Via the applications resource. An ARI client can, at any time, subscribe + to all resources in an event source merely by not providing an explicit + resource. For example, subscribing to an event source of 'channels:' + as opposed to 'channels:12345' will subscribe the application to all + channels. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.4.0 to Asterisk 13.5.0 ------------ +------------------------------------------------------------------------------ + +AMI +------------------ + * A new ContactStatus event has been added that reflects res_pjsip contact + lifecycle changes: Created, Removed, Reachable, Unreachable, Unknown. + + * Added the Linkedid header to the common channel headers listed for each + channel in AMI events. + +ARI +------------------ + * A new feature has been added that enables the retrieval of modules and + module information through an HTTP request. Information on a single module + can be also be retrieved. Individual modules can be loaded to Asterisk, as + well as unloaded and reloaded. + +* A new resource has been added to the 'asterisk' resource, 'config/dynamic'. + This resource allows for push configuration of sorcery derived objects + within Asterisk. The resource supports creation, retrieval, updating, and + deletion. Sorcery derived objects that are manipulated by this resource + must have a sorcery wizard that supports the desired operations. + + * A new feature has been added that allows for the rotation of log channels + through HTTP requests. + + +res_pjsip +------------------ +* A new 'g726_non_standard' endpoint option has been added that, when set to + 'yes' and g.726 audio is negotiated, forces the codec to be treated as if it + is AAL2 packed on the channel. + +* A new 'rtp_keepalive' endpoint option has been added. This option specifies + an interval, in seconds, at which we will send RTP comfort noise packets to + the endpoint. This functions identically to chan_sip's "rtpkeepalive" option. + +* New 'rtp_timeout' and 'rtp_timeout_hold' endpoint options have been added. + These options specify the amount of time, in seconds, that Asterisk will wait + before terminating the call due to lack of received RTP. These are identical + to chan_sip's rtptimeout and rtpholdtimeout options. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.3.0 to Asterisk 13.4.0 ------------ +------------------------------------------------------------------------------ + +chan_pjsip +------------------ + * New 'rpid_immediate' option to control if connected line update information + goes to the caller immediately or waits for another reason to send the + connected line information update. See the online option documentation for + more information. Defaults to 'no' as setting it to 'yes' can result in + many unnecessary messages being sent to the caller. + + * The configuration setting 'progressinband' now defaults to 'no', which + matches the actual behavior of previous versions. + +res_pjsip +------------------ + * A new CLI command has been added: "pjsip show settings", which shows + both the global and system configuration settings. + + * A new aor option has been added: "qualify_timeout", which sets the timeout + in seconds for a qualify. The default is 3 seconds. This overrides the + hard coded 32 seconds in pjproject. + + * Endpoint status will now change to "Unreachable" when all contacts are + unavailable. When any contact becomes available, the endpoint will status + will change back to "Reachable". + + * A new global option has been added: "max_initial_qualify_time", which + sets the maximum amount of time from startup that qualifies should be + attempted on all contacts. + +res_ari_channels +------------------ + * Two new events, 'ChannelHold' and 'ChannelUnhold', have been added to the + events data model. These events are raised when a channel indicates a hold + or unhold, respectively. + +func_holdintercept +------------------ + * A new dialplan function, HOLD_INTERCEPT, has been added. This function, when + placed on a channel, intercepts hold/unhold indications signalled by the + channel and prevents them from moving on to other channels in a bridge with + the hold initiator. Instead, AMI or ARI events are raised indicating that + the channel wanted to place someone on hold. This allows external + applications to implement their own custom hold/unhold logic. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.2.0 to Asterisk 13.3.0 ------------ +------------------------------------------------------------------------------ + +chan_pjsip/app_transfer +------------------ + * The Transfer application, when used with chan_pjsip, now supports using + a PJSIP endpoint as the transfer destination. This is in addition to + explicitly specifying a SIP URI to transfer to. + +res_ari_channels +------------------ + * The ARI /channels resource now supports a new operation, 'redirect'. The + redirect operation will perform a technology and state specific redirection + on the channel to a specified endpoint or destination. In the case of SIP + technologies, this is either a 302 Redirect response to an on-going INVITE + dialog or a SIP REFER request. + +res_pjsip +------------------ + * A new 'endpoint_identifier_order' option has been added that allows one to + set the order by which endpoint identifiers are processed and checked. This + option is specified under the 'global' type configuration section. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.1.0 to Asterisk 13.2.0 ------------ +------------------------------------------------------------------------------ + + * New 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions have been added which + allow examining PJSIP AORs or contacts from the dialplan. + +res_pjsip_outbound_registration +------------------ + * The 'pjsip send unregister' command now stops further registrations. + + * A new command 'pjsip send register' has been added which allows you to + start or restart periodic registration. It can be used after a + 'send unregister' or after a 401 permanent error. + +res_pjsip_config_wizard +------------------ + * This is a new module that adds streamlined configuration capability for + chan_pjsip. It's targeted at users who have lots of basic configuration + scenarios like 'phone' or 'agent' or 'trunk'. Additional information + can be found in the sample configuration file at + config/samples/pjsip_wizard.conf.sample. + +res_fax +----------- + * The T.38 negotiation timeout was previously hard coded at 5000 milliseconds + and is now configurable via the 't38timeout' configuration option in + res_fax.conf and via the fax options dialplan function 'FAXOPT(t38timeout)'. + The default remains at 5000 milliseconds. + +PJSIP Transports +---------- + * The ca_list_path transport parameter has been added for TLS transports. This + option behaves similarly to the old sip.conf option "tlscapath". In order to + use this, you must be using PJProject version 2.4 or higher. + +ARI +------------------ + * The Originate operation now takes in an originator channel. The linked ID of + this originator channel is applied to the newly originated outgoing channel. + If using CEL this allows an association to be established between the two so + it can be recognized that the originator is dialing the originated channel. + + * "language" (the default spoken language for the channel) is now included in + the standard channel state output for suitable events. + + * The POST channels/{id} operation and the POST channels/{id}/continue operation + now have a new "label" parameter. This allows for origination or continuation + to a labeled priority in the dialplan instead of requiring a specific priority + number. The ARI version has been bumped to 1.7.0 as a result. + +AMI +------------------ + * "Language" (the default spoken language for the channel) is now included in + the standard channel state output for suitable events. + + * AMI actions that return a list of events have been made to return consistent + headers for the action response event starting the list and the list complete + event. The AMI version has been bumped to 2.7.0 as a result. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 13.0.0 to Asterisk 13.1.0 ------------ +------------------------------------------------------------------------------ + +AMI +------------------ + * Event NewConnectedLine is emitted when the connected line information on + a channel changes. + +ARI +------------------ + * Event ChannelConnectedLine is emitted when the connected line information + on a channel changes. + +Core Transfers +----------------- + +The features.conf general section has three new configurable options: + * transferdialattempts + * transferretrysound + * transferinvalidsound +For more information on what these options do, see the Asterisk wiki: + https://wiki.asterisk.org/wiki/x/W4fAAQ + +Channel Drivers +------------------ + +chan_pjsip +------------------ + * New 'media_encryption_optimistic' endpoint setting. This will use SRTP + when possible but does not consider lack of it a failure. + +res_pjsip_endpoint_identifer_ip +------------------ + * New CLI commands have been added: "pjsip show identif(y|ies)", which lists + all configured PJSIP identify objects + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 12 to Asterisk 13 -------------------- +------------------------------------------------------------------------------ + +Overview +------------------ + +Asterisk 13 is the next Long Term Support (LTS) release of Asterisk. As such, +the focus of development for this release of Asterisk was on improving the +usability and features developed in the previous Standard release, Asterisk 12. +Beyond a general refinement of end user features, development focussed heavily +on the Asterisk APIs - the Asterisk Manager Interface (AMI) and the Asterisk +REST Interface (ARI) - and the PJSIP stack in Asterisk. Some highlights of the +new features include: + +* Asterisk security events are now provided via AMI, allowing end users to + monitor their Asterisk system in real time for security related issues. +* External control of Message Waiting Indicators (MWI) through both AMI and ARI. +* Reception/transmission of out of call text messages using any supported + channel driver/protocol stack through ARI. +* Resource List Server support in the PJSIP stack, providing subscriptions to + lists of resources and batched delivery of NOTIFY requests. +* Inter-Asterisk distributed device state and mailbox state using the PJSIP + stack. + +It is important to note that Asterisk 13 is built on the architecture developed +during the previous Standard release, Asterisk 12. Users upgrading to +Asterisk 13 should read about the new features in Asterisk 12 later in this file +(see Functionality changes from Asterisk 11 to Asterisk 12), as well as the +UPGRADE-12.txt delivered with this release. In particular, users upgrading to +Asterisk 13 from a release prior to Asterisk 12 should read the specifications +on AMI, CDRs, and CEL on the Asterisk wiki: + * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ + * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ + * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ + +Many new featuers in Asterisk 13 were introduced in point releases of +Asterisk 12. Following this section - which documents the changes from all +versions of Asterisk 12 to Asterisk 13 - users should examine the new features +that were introduced in the point releases of Asterisk 12, as they are also +included in Asterisk 13. + +Finally, all users upgrading to Asterisk 13 should read the UPGRADE.txt file +delivered with this release. + + +Build System +------------------ + * Sample config files have been moved from configs/ to a sub-folder of that + directory, samples. + + * The menuselect utility has been pulled into the Asterisk repository. As a + result, the libxml2 development library is now a required dependency for + Asterisk. + + * A new Compiler Flag, REF_DEBUG, has been added. When enabled, reference + counted objects will emit additional debug information to the refs log file + located in the standard Asterisk log file directory. This log file is useful + in tracking down object leaks and other reference counting issues. Prior to + this version, this option was only available by modifying the source code + directly. This change also includes a new script, refcounter.py, in the + contrib folder that will process the refs log file. Note that this replaces + the refcounter utility that could be built from the utils directory. + + +Applications +------------------ + +DahdiBarge +------------------ + * This module was deprecated and has been removed. Users of app_dahdibarge + should use ChanSpy instead. + +MixMonitor +------------------ + * New options to play a beep when starting a recording and stopping a recording + have been added. The option "p" will play a beep to the channel that starts + the recording. The option "P" will play a beep to the channel that stops the + recording. + +Queue +------------------ + * Queue rules can now be stored in a database table, queue_rules. Unlike other + RealTime tables, the queue_rules table is only examined on module load or + module reload. A new general setting has been added to queuerules.conf, + 'realtime_rules', which, when set to 'yes', will cause app_queue to look in + RealTime for additional queue rules to parse. Note that both the file and + the database can be used as a provide of queue rules when 'realtime_rules' + is set to 'yes'. + + When app_queue is reloaded, all rules are re-parsed and loaded into memory. + There is no caching of RealTime queue rules. + +ReadFile +------------------ + * This module was deprecated and has been removed. Users of app_readfile + should use func_env's FILE function instead. + +Say +------------------ + * The 'say' family of dialplan applications now support the Japanese + language. The 'language' parameter in say.conf now recognizes a setting of + 'ja', which will enable Japanese language specific mechanisms for playing + back numbers, dates, and other items. + * Counting, enumeration and dates now supports Icelandic grammar with the + 'language' parameter set to 'is'. + +SayCountPL +------------------ + * This module was deprecated and has been removed. Users of app_saycountpl + should use the Say family of applications. + +SetMusicOnHold +------------------ + * The SetMusicOnHold dialplan application was deprecated and has been removed. + Users of the application should use the CHANNEL function's musicclass + setting instead. + +WaitMusicOnHold +------------------ + * The WaitMusicOnHold dialplan application was deprecated and has been + removed. Users of the application should use MusicOnHold with a duration + parameter instead. + +VoiceMail +------------------ + * VoiceMail and VoiceMailMain now support the Japanese language. The + 'language' parameter in voicemail.conf now recognizes a setting of 'ja', + which will enable prompts to be played back using a Japanese grammatical + structure. Additional prompts are necessary for this functionality, + including: + - jb-arimasu: there is + - jb-arimasen: there is not + - jb-oshitekudasai: please press + - jb-ni: article ni + - jb-ga: article ga + - jb-wa: article wa + - jb-wo: article wo + + * Add the ability to specify multiple email addresses in configuration, + separated by a |. + + +CDR Backends +------------------ + +cdr_sqlite +----------------- + * This module was deprecated and has been removed. Users of cdr_sqlite + should use cdr_sqlite3_custom. + +cdr_pgsql +------------------ + * Added the ability to support PostgreSQL application_name on connections. + This allows PostgreSQL to display the configured name in the + pg_stat_activity view and CSV log entries. This setting is configurable + for cdr_pgsql via the appname configuration setting in cdr_pgsql.conf. + + +CEL Backends +------------------ + +cel_pgsql +------------------ + * Added the ability to support PostgreSQL application_name on connections. + This allows PostgreSQL to display the configured name in the + pg_stat_activity view and CSV log entries. This setting is configurable + for cel_pgsql via the appname configuration setting in cel_pgsql.conf. + + +Channel Drivers +------------------ + +chan_dahdi +------------------ + * SS7 support now requires libss7 v2.0 or later. + + * Added SS7 support for connected line and redirecting. + + * Most SS7 CLI commands are reworked as well as new SS7 commands added. + See online CLI help. + + * Added several SS7 config option parameters described in + chan_dahdi.conf.sample. + +chan_gtalk +------------------ + * This module was deprecated and has been removed. Users of chan_gtalk + should use chan_motif. + +chan_h323 +------------------ + * This module was deprecated and has been removed. Users of chan_h323 + should use chan_ooh323. + +chan_jingle +------------------ + * This module was deprecated and has been removed. Users of chan_jingle + should use chan_motif. + +chan_pjsip +------------------ + * Added the CLI command 'pjsip list ciphers' so a user can know what + OpenSSL names are available on their system for the pjsip.conf cipher + option. + +chan_sip +------------------ + * The SIPPEER dialplan function no longer supports using a colon as a + delimiter for parameters. The parameters for the function should be + delimited using a comma. + + * The SIPCHANINFO dialplan function was deprecated and has been removed. Users + of the function should use the CHANNEL function instead. + + +Core +------------------ + +Account Codes +------------------ + * Added functional peeraccount support. Except for Queue, the + accountcode propagation is now consistently propagated to outgoing + channels before dialing. The channel accountcode can change from its + original non-empty value on channel creation for the following specific + reasons. One, dialplan sets it using CHANNEL(accountcode). Two, an + originate method that can specify an accountcode value. Three, the + calling channel propagates its peeraccount or accountcode to the + outgoing channel's accountcode before dialing. The change has two + visible effects. One, local channels now cross accountcode and + peeraccount across the special bridge between the ;1 and ;2 channels + just like channels between normal bridges. Two, the + CHANNEL(peeraccount) value can now be set before Dial and FollowMe to + set the accountcode on the outgoing channel(s). + + For Queue, an outgoing channel's non-empty accountcode will not change + unless explicitly set by CHANNEL(accountcode). The change has three + visible effects. One, local channels now cross accountcode and + peeraccount across the special bridge between the ;1 and ;2 channels + just like channels between normal bridges. Two, the queue member will + get an accountcode if it doesn't have one and one is available from the + calling channel's peeraccount. Three, accountcode propagation includes + local channel members where the accountcodes are propagated early + enough to be available on the ;2 channel. + +AMI +------------------ + * New DeviceStateChanged and PresenceStateChanged AMI events have been added. + These events are emitted whenever a device state or presence state change + occurs. The events are controlled by res_manager_device_state.so and + res_manager_presence_state.so. If the high frequency of these events is + problematic for you, do not load these modules. + + * Added DialplanExtensionAdd and DialplanExtensionRemove AMI commands. They + work in basically the same way as the 'dialplan add extension' and + 'dialplan remove extension' CLI commands respectively. + + * New AMI action LoggerRotate reloads and rotates logger in the same manner + as CLI command 'logger rotate' + + * New AMI Actions FAXSessions, FAXSession, and FAXStats replicate the + functionality of CLI commands 'fax show sessions', 'fax show session', + and fax show stats' respectively. + + * New AMI actions PRIDebugSet, PRIDebugFileSet, and PRIDebugFileUnset + enable manager control over PRI debugging levels and file output. + + * AMI action PJSIPNotify may now send to a URI instead of only to a PJSIP + endpoint as long as a default outbound endpoint is set. This also applies + to the equivalent CLI command (pjsip send notify) + + * The AMI action PJSIPShowEndpoint now includes ContactStatusDetail sections + that give information on Asterisk's attempts to qualify the endpoint. + + * The DialEnd event will now contain a Forward header if the dial is ending + due to the call being forwarded. The contents of the Forward header is the + extension in the number to which the call is being forwarded. + +CEL +------------------ + * The "bridge_technology" extra field key has been added to BRIDGE_ENTER + and BRIDGE_EXIT events. + +Features +------------------ + * Channel variables are now substituted in arguments passed to applications + run by using dynamic features. + +TLS +------------------ + * The TLS core in Asterisk now supports Perfect Forward Secrecy (PFS). + Enabling PFS is attempted by default, and is dependent on the configuration + of the module using TLS. + - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not + specify a ECDHE cipher suite in sip.conf, for example: + tlscipher=AES128-SHA:DES-CBC3-SHA + - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters + into the private key file, e.g., sip.conf tlsprivatekey. For example, the + default dh2048.pem - see + http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-35.1/src/apps/dh2048.pem?txt + - Because clients expect the server to prefer PFS, and because OpenSSL sorts + its cipher suites by bit strength, see "openssl ciphers -v DEFAULT". + Consider re-ordering your cipher suites in the respective configuration + file. For example: + tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH + will use PFS when offered by the client. Clients which do not offer PFS + fall-back to AES-128 (or even 3DES, as recommended by RFC 3261). + + +Functions +------------------ + +JACK_HOOK +------------------ + * The JACK_HOOK function now supports audio with a sample rate higher than + 8kHz. + + +Resources +------------------ + +res_config_pgsql +------------------ + * Added the ability to support PostgreSQL application_name on connections. + This allows PostgreSQL to display the configured name in the + pg_stat_activity view and CSV log entries. This setting is configurable + for res_config_pgsql via the dbappname configuration setting in + res_pgsql.conf. + +res_pjsip_outbound_publish +------------------ + * A new module, res_pjsip_outbound_publish provides the mechanisms for sending + PUBLISH requests for specific event packages to another SIP User Agent. + +res_pjsip_pubsub +------------------ + * The publish/subscribe core module has been updated to support RFC 4662 + Resource Lists, allowing Asterisk to act as a Resource List Server (RLS). + Resource lists are configured in pjsip.conf under a new object type, + resource_list. Resource lists can contain either message-summary or presence + events, and can be composed of specific resources that provide the event or + other resource lists. + + * Inbound publication support is provided by a new object, inbound-publication. + This configures res_pjsip_pubsub to accept PUBLISH requests from a particular + resource. Which events are accepted is constructed dynamically; see + res_pjsip_publish_asterisk for more information. + +res_pjsip_publish_asterisk +------------------ + * A new module, res_pjsip_publish_asterisk adds support for PUBLISH requests of + Asterisk information to other Asterisk servers. This module is intended only + for Asterisk to Asterisk exchanges of information. Currently, this includes + both mailbox state and device state information. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 12.4.0 to Asterisk 12.5.0 ------------ +------------------------------------------------------------------------------ + +ARI +------------------ + * Stored recordings now support a new operation, copy. This will take an + existing stored recording and copy it to a new location in the recordings + directory. + + * LiveRecording objects now have three additional fields that can be reported + in a RecordingFinished ARI event: + - total_duration: the duration of the recording + - talking_duration: optional. The duration of talking detected in the + recording. This is only available if max_silence_seconds was specified + when the recording was started. + - silence_duration: optional. The duration of silence detected in the + recording. This is only available if max_silence_seconds was specified + when the recording was started. + Note that all duration values are reported in seconds. + + * Users of ARI can now send and receive out of call text messages. Messages + can be sent directly to a particular endpoint, or can be sent to the + endpoints resource directly and inferred from the URI scheme. Text + messages are passed to ARI clients as TextMessageReceived events. ARI + clients can choose to receive text messages by subscribing to the particular + endpoint technology or endpoints that they are interested in. + + * The applications resource now supports subscriptions to all endpoints of + a particular channel technology. For example, subscribing to an eventSource + of 'endpoint:PJSIP' will subscribe to all PJSIP endpoints. + +res_pjsip +------------------ + * The endpoint configuration object now supports 'accountcode'. Any channel + created for an endpoint with this setting will have its accountcode set + to the specified value. + +res_hep_rtcp +------------------ + * A new module, res_hep_rtcp, has been added that will forward RTCP call + statistics to a HEP capture server. See res_hep for more information. + +Functions +------------------ + * Function AUDIOHOOK_INHERIT has been deprecated. Audiohooks are now + unconditionally inhereted through masquerades. As a side benefit, more + than one audiohook of a given type may persist through a masquerade now. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 12.3.0 to Asterisk 12.4.0 ------------ +------------------------------------------------------------------------------ + +AgentRequest +------------------ + * Returns new AGENT_STATUS value "NOT_CONNECTED" if the agent fails to + connect with an incoming caller after being alerted to the presence + of the incoming caller. The most likely reason this would happen is + the agent did not acknowledge the call in time. + +AMI +------------------ + * New events have been added for the TALK_DETECT function. When the function + is used on a channel, ChannelTalkingStart/ChannelTalkingStop events will be + emitted to connected AMI clients indicating the start/stop of talking on + the channel. + +ARI +------------------ + * New event models have been aded for the TALK_DETECT function. When the + function is used on a channel, ChannelTalkingStarted/ChannelTalkingFinished + events will be emitted to connected WebSockets subscribed to the channel, + indicating the start/stop of talking on the channel. + +Functions +------------------ + * A new function, TALK_DETECT, has been added. When set on a channel, this + fucntion causes events indicating the starting/stoping of talking on said + channel to be emitted to both AMI and ARI clients. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 12.2.0 to Asterisk 12.3.0 ------------ +------------------------------------------------------------------------------ + +ARI +------------------ + * A new Playback URI 'tone' has been added. Tones are specified either as + an indication name (e.g. 'tone:busy') from indications.conf or as a tone + pattern (e.g. 'tone:240/250,0/250'). Tones differ from normal playback + URIs in that they must be stopped manually and will continue to occupy + a channel's ARI control queue until they are stopped. They also can not + be rewound or fastforwarded. + + * User events can now be generated from ARI. Events can be signalled with + arbitrary json variables, and include one or more of channel, bridge, or + endpoint snapshots. An application must be specified which will receive + the event message (other applications can subscribe to it). The message + will also be delivered via AMI provided a channel is attached. Dialplan + generated user event messages are still transmitted via the channel, and + will only be received by a stasis application they are attached to or if + the channel is subscribed to. + +chan_sip +----------- + * SIP peers can now specify 'trust_id_outbound' which affects RPID/PAI + fields for prohibited callingpres information. Values are legacy, no, and + yes. By default, legacy is used. + trust_id_outbound=legacy - behavior remains the same as 1.8.26.1. When + dealing with prohibited callingpres and sendrpid=pai/rpid, RPID/PAI + headers are appended to outbound SIP messages just as they are with + allowed callingpres values, but data about the remote party's identity is + anonymized. + When sendrpid=rpid, only the remote party's domain is anonymized. + trust_id_outbound=no - when dealing with prohibited callingpres, RPID/PAI + headers are not sent. + trust_id_outbound=yes - RPID/PAI headers are applied with the full remote + party information in tact even for prohibited callingpres information. + In the case of PAI, a Privacy: id header will be appended for prohibited + calling information to communicate that the private information should + not be relayed to untrusted parties. + +res_parking +------------------ + * Manager action 'Park' now takes an additional argument 'AnnounceChannel' + which can be used to announce the parked call's location to an arbitrary + channel in a bridge. If 'Channel' and 'TimeoutChannel' are now the two + parties in a one to one bridge, 'TimeoutChannel' is treated as having + parked 'Channel' like with the Park Call DTMF feature and will receive + announcements prior to being hung up. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 12.1.0 to Asterisk 12.2.0 ------------ +------------------------------------------------------------------------------ + +Record +------------------ + * Record application now has an option 'o' which allows 0 to act as an exit + key setting the RECORD_STATUS variable to 'OPERATOR' instead of 'DTMF' + +ChanSpy +-------------------------- + * ChanSpy now accepts a channel uniqueid or a fully specified channel name + as the chanprefix parameter if the 'u' option is specified. + +ConfBridge +-------------------------- + * CONFBRIDGE dialplan function is now capable of creating/modifying dynamic + conference user menus. + + * CONFBRIDGE dialplan function is now capable of removing dynamic conference + menus, bridge settings, and user settings that have been applied by the + CONFBRIDGE dialplan function. + + * The ConfBridge dialplan application now sets a channel variable, + CONFBRIGE_RESULT, upon exiting. This variable can be used to determine + how a channel exited the conference. + + * Added conference user option 'announce_join_leave_review'. This option + implies 'announce_join_leave' with the added effect that the user will + be asked if they want to confirm or re-record the recording of their + name when entering the conference + +Directory +-------------------------- + * At exit, the Directory application now sets a channel variable + DIRECTORY_RESULT to one of the following based on the reason for exiting: + OPERATOR user requested operator by pressing '0' for operator + ASSISTANT user requested assistant by pressing '*' for assistant + TIMEOUT user pressed nothing and Directory stopped waiting + HANGUP user's channel hung up + SELECTED user selected a user from the directory and is routed + USEREXIT user pressed '#' from the selection prompt to exit + FAILED directory failed in a way that wasn't accounted for. Dang. + +Monitor +------------------ + * Monitor() - A new option, B(), has been added that will turn on a periodic + beep while the call is being recorded. + +MusicOnHold +-------------------------- + * MusicOnHold streams (all modes other than "files") now support wide band + audio too. + +Page +-------------------------- + * Added options 'b' and 'B' to apply predial handlers for outgoing calls + and for the channel executing Page respectively. + +PickupChan +-------------------------- + * PickupChan now accepts channel uniqueids of channels to pickup. + +Say +-------------------------- + * If a channel variable SAY_DTMF_INTERRUPT is present on a channel and set + to 'true' (case insensitive), then any Say application (SayNumber, + SayDigits, SayAlpha, SayAlphaCase, SayUnixTime, and SayCounted) will + anticipate DTMF. If DTMF is received, these applications will behave like + the background application and jump to the received extension once a match + is established or after a short period of inactivity. + +MixMonitor +------------------------- + * A new function, MIXMONITOR, has been added to allow access to individual + instances of MixMonitor on a channel. + + * A new option, B(), has been added that will turn on a periodic beep while the + call is being recorded. + + +Channel Drivers +------------------------- + +chan_sip +------------------------- + * TEL URI support for inbound INVITE requests has been added. chan_sip will + now handle TEL schemes in the Request and From URIs. The phone-context in + the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on + the inbound channel. + +Core +------------------ + * Exposed sorcery-based configuration files like pjsip.conf to dialplans via + the new AST_SORCERY diaplan function. + + * Core Show Locks output now includes Thread/LWP ID if the platform + supports this feature. + + * New "logger add channel" and "logger remove channel" CLI commands have + been added to allow creation and deletion of dynamic logger channels + without configuration changes. These dynamic logger channels will only + exist until the next restart of asterisk. + +ARI +------------------ + * The live recording object on recording events now contains a target_uri + field which contains the URI of what is being recorded. + + * The bridge type used when creating a bridge is now a comma separated list of + bridge properties. Valid options are: mixing, holding, dtmf_events, and + proxy_media. + + * A channelId can now be provided when creating a channel, either in the + uri (POST channels/my-channel-id) or as query parameter. A local channel + will suffix the second channel id with ';2' unless provided as query + parameter otherChannelId. + + * A bridgeId can now be provided when creating a bridge, either in the uri + (POST bridges/my-bridge-id) or as a query parameter. + + * A playbackId can be provided when starting a playback, either in the uri + (POST channels/my-channel-id/play/my-playback-id / + POST bridges/my-bridge-id/play/my-playback-id) or as a query parameter. + + * A snoop channel can be started with a snoopId, in the uri or query. + +AMI +------------------ + * Originate now takes optional parameters ChannelId and OtherChannelId, + used to set the UniqueId on creation. The other id is assigned to the + second channel when dialing LOCAL, or defaults to appending ;2 if only + the single Id is given. + + * The Mixmonitor action now has a "Command" header that can be used to + indicate a post-process command to run once recording finishes. + +RealTime +------------------ + * A new set of Alembic scripts has been added for CDR tables. This will create + a 'cdr' table with the default schema that Asterisk expects. + + +Functions +------------------ + * A new function was added: PERIODIC_HOOK. This allows running a periodic + dialplan hook on a channel. Any audio generated by this hook will be + injected into the call. + + +Resources +------------------ + +res_hep +------------------ + * A new module, res_hep, has been added, that acts as a generic packet + capture agent for the Homer Encapsulation Protocol (HEP) version 3. + It can be configured via hep.conf. Other modules can use res_hep to send + message traffic to a HEP capture server. + +res_hep_pjsip +------------------ + * A new module, res_hep_pjsip, has been added that will forward PJSIP + message traffic to a HEP capture server. See res_hep for more + information. + +res_pjsip +------------------ + * transport and endpoint ToS options (tos, tos_audio, and tos_video) may now + be set as the named set of ToS values (cs0-cs7, af11-af43, ef). + + * Added the following new CLI commands: + - "pjsip show contacts" - list all current PJSIP contacts. + - "pjsip show contact" - show specific information about a current PJSIP + contact. + - "pjsip show channel" - show detailed information about a PJSIP channel. + +res_pjsip_multihomed +------------------ + * A new module, res_pjsip_multihomed handles situations where the system + Asterisk is running out has multiple interfaces. res_pjsip_multihomed + determines which interface should be used during message sending. + +res_pjsip_pidf_digium_body_supplement +------------------ + * A new module, res_pjsip_pidf_digium_body_supplement provides NOTIFY + request body formatting for presence support in Digium phones. + +res_pjsip_send_to_voicemail +------------------ + * A new module, res_pjsip_send_to_voicemail allows for REFER requests with + particular headers to transfer a PJSIP channel directly to a particular + extension that has VoiceMail. This is intended to be used with Digium + phones that support this feature. + +res_pjsip_outbound_registration +------------------ + * A new CLI command has been added: "pjsip show registrations", which lists + all configured PJSIP registrations + + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 12.0.0 to Asterisk 12.1.0 ------------ +------------------------------------------------------------------------------ + +AMI +------------------ + * Added a new module that provides AMI control over MWI within Asterisk, + res_mwi_external_ami. Note that this module depends on res_mwi_external; + for more information on enabling this module, see res_mwi_external. + This module provides the MWIGet/MWIUpdate/MWIDelete actions, as well as + the MWIGet/MWIGetComplete events. + + * The DialStatus field in the DialEnd event can now contain additional + statuses that convey how the dial operation terminated. This includes + ABORT, CONTINUE, and GOTO. + + * AMI will now emit security events. A new class authorization has been + added in manager.conf for the security events, 'security'. The new events + are: + - FailedACL - raised when a request violates an ACL check + - InvalidAccountID - raised when a request fails an authentication + check due to an invalid account ID + - SessionLimit - raised when a request fails due to exceeding the + number of allowed concurrent sessions for a service + - MemoryLimit - raised when a request fails due to an internal memory + allocation failure + - LoadAverageLimit - raised when a request fails because a configured + load average limit has been reached + - RequestNotAllowed - raised when a request is not allowed by + the service + - AuthMethodNotAllowed - raised when a request used an authentication + method not allowed by the service + - RequestBadFormat - raised when a request is received with bad formatting + - SuccessfulAuth - raised when a request successfully authenticates + - UnexpectedAddress - raised when a request has a different source address + then what is expected for a session already in progress with a service + - ChallengeResponseFailed - raised when a request's attempt to authenticate + has been challenged, and the request failed the authentication challenge + - InvalidPassword - raised when a request provides an invalid password + during an authentication attempt + - ChallengeSent - raised when an Asterisk service send an authentication + challenge to a request + - InvalidTransport - raised when a request attempts to use a transport not + allowed by the Asterisk service + + * Bridge related events now have two additional fields: BridgeName and + BridgeCreator. BridgeName is a descriptive name for the bridge; + BridgeCreator is the name of the entity that created the bridge. This + affects the following events: ConfbridgeStart, ConfbridgeEnd, + ConfbridgeJoin, ConfbridgeLeave, ConfbridgeRecord, ConfbridgeStopRecord, + ConfbridgeMute, ConfbridgeUnmute, ConfbridgeTalking, BlindTransfer, + AttendedTransfer, BridgeCreate, BridgeDestroy, BridgeEnter, BridgeLeave + +ARI +------------------ + * The Bridge data model now contains the additional fields 'name' and + 'creator'. The 'name' field conveys a descriptive name for the bridge; + the 'creator' field conveys the name of the entity that created the bridge. + This affects all responses to HTTP requests that return a Bridge data model + as well as all event derived data models that contain a Bridge data model. + The POST /bridges operation may now optionally specify a name to give to + the bridge being created. + + * Added a new ARI resource 'mailboxes' which allows the creation and + modification of mailboxes managed by external MWI. Modules res_mwi_external + and res_stasis_mailbox must be enabled to use this resource. For more + information on external MWI control, see res_mwi_external. + + * Added new events for externally initiated transfers. The event + BridgeBlindTransfer is now raised when a channel initiates a blind transfer + of a bridge in the ARI controlled application to the dialplan; the + BridgeAttendedTransfer event is raised when a channel initiates an + attended transfer of a bridge in the ARI controlled application to the + dialplan. + + * Channel variables may now be specified as a body parameter to the + POST /channels operation. The 'variables' key in the JSON is interpreted + as a sequence of key/value pairs that will be added to the created channel + as channel variables. Other parameters in the JSON body are treated as + query parameters of the same name. + +HTTP +------------------ + * Asterisk's HTTP server now supports chunked Transfer-Encoding. This will be + automatically handled by the HTTP server if a request is received with a + Transfer-Encoding type of "chunked". + +res_pjsip +------------------ + * Path support has been added with the 'support_path' option in registration + and aor sections. + + * A 'debug' option has been added to the globals section that will allow + sip messages to be logged. + + * A 'set_var' option has been added to endpoints that will automatically + set the desired variable(s) on a channel created for that endpoint. + + * Several new tables and columns have been added to the realtime schema for + the res_pjsip related modules. See the UPGRADE.txt notes for updating + the database schema. + +res_mwi_external +------------------ + * A new module, res_mwi_external, has been added to Asterisk. This module + acts as a base framework that other modules can build on top of to allow + an external system to control MWI within Asterisk. For implementations + that make use of res_mwi_external, see res_mwi_external_ami and + res_ari_mailboxes. Note that res_mwi_external canflicts with other modules + that may produce MWI themselves, such as app_voicemail. res_mwi_external + and other modules that depend on it cannot be built or loaded with + app_voicemail present. + +res_pjsip +------------------ + * DNS functionality will now automatically be enabled if the system configured + nameservers can be retrieved. If the system configured nameservers can not be + retrieved the functionality will resort to using system resolution. Functionalty + such as SRV records and failover will not be available if system resolution + is in use. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 11 to Asterisk 12 -------------------- +------------------------------------------------------------------------------ + +Overview +------------------ + +Asterisk 12 is a standard release of the Asterisk project. As such, the +focus of development for this release was on core architectural changes and +major new features. This includes: + * A more flexible bridging core based on the Bridging API + * A new internal message bus, Stasis + * Major standardization and consistency improvements to AMI + * Addition of the Asterisk RESTful Interface (ARI) + * A new SIP channel driver, chan_pjsip +In addition, as the vast majority of bridging in Asterisk was migrated to the +Bridging API used by ConfBridge, major changes were made to most of the +interfaces in Asterisk. This includes not only AMI, but also CDRs and CEL. + +Specifications have been written for the affected interfaces. These +specifications are available on the Asterisk wiki: + * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ + * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ + * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ + +It is *highly* recommended that anyone migrating to Asterisk 12 read the +information regarding its release both in this file and in the accompanying +UPGRADE.txt file. More detailed information on the major changes can be found +on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/0YCLAQ. + + +Build System +------------------ + * Added build option DISABLE_INLINE. This option can be used to work around a + bug in gcc. For more information, see + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816 + + * Removed the CHANNEL_TRACE development mode build option. Certain aspects of + the CHANNEL_TRACE build option were incompatible with the new bridging + architecture. + + * Asterisk now optionally uses libxslt to improve XML documentation generation + and maintainability. If libxslt is not available on the system, some XML + documentation will be incomplete. + + * Asterisk now depends on libjansson. If a package of libjansson is not + available on your distro, please see http://www.digip.org/jansson/. + + * Asterisk now depends on libuuid and, optionally, uriparser. It is + recommended that you install uriparser, even if it is optional. + + * The new SIP stack and channel driver uses a particular version of PJSIP. + Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on + configuring and installing PJSIP for usage with Asterisk. + + * Optional API was re-implemented to be more portable, and no longer requires + weak reference support from the compiler. The build option OPTIONAL_API may + be disabled to disable Optional API support. + +Applications +------------------ + +AgentLogin +------------------ + * Along with AgentRequest, this application has been modified to be a + replacement for chan_agent. The act of a channel calling the AgentLogin + application places the channel into a pool of agents that can be + requested by the AgentRequest application. Note that this application, as + well as all other agent related functionality, is now provided by the + app_agent_pool module. See chan_agent and AgentRequest for more information. + + * This application no longer performs agent authentication. If authentication + is desired, the dialplan needs to perform this function using the + Authenticate or VMAuthenticate application or through an AGI script before + running AgentLogin. + + * If this application is called and the agent is already logged in, the + dialplan will continue exection with the AGENT_STATUS channel variable set + to ALREADY_LOGGED_IN. + + * The agents.conf schema has changed. Rather than specifying agents on a + single line in comma delineated fashion, each agent is defined in a separate + context. This allows agents to use the power of context templates in their + definition. + + * A number of parameters from agents.conf have been removed. This includes + maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat, + urlprefix, and savecallsin. These options were obsoleted by the move from + a channel driver model to the bridging/application model provided by + app_agent_pool. + +AgentRequest +------------------ + * A new application, this will request a logged in agent from the pool and + bridge the requested channel with the channel calling this application. + Logged in agents are those channels that called the AgentLogin application. + If an agent cannot be requested from the pool, the AGENT_STATUS dialplan + application will be set with an appropriate error value. + +AgentMonitorOutgoing +------------------ + * This application has been removed. It was a holdover from when + AgentCallbackLogin was removed. + +AlarmReceiver +------------------ + * Added support for additional Ademco DTMF signalling formats, including + Express 4+1, Express 4+2, High Speed and Super Fast. + + * Added channel variable ALARMRECEIVER_CALL_LIMIT. This sets the maximum + call time, in milliseconds, to run the application. + + * Added channel variable ALARMRECEIVER_RETRIES_LIMIT. This sets the + maximum number of times to retry the call. + + * Added a new configuration option answait. If set, the AlarmReceiver + application will wait the number of milliseconds specified by answait + after the channel has answered. Valid values range between 500 + milliseconds and 10000 milliseconds. + + * Added configuration option no_group_meta. If enabled, grouping of metadata + information in the AlarmReceiver log file will be skipped. + +Answer +------------------ + * It is now no longer possible to bypass updating the CDR on the channel + when answering. CDRs reflect the state of the channel and will always + reflect the time they were Answered. + +BridgeWait +------------------ + * A new application in Asterisk, this will place the calling channel + into a holding bridge, optionally entertaining them with some form of + media. Channels participating in a holding bridge do not interact with + other channels in the same holding bridge. Optionally, however, a channel + may join as an announcer. Any media passed from an announcer channel is + played to all channels in the holding bridge. Channels leave a holding + bridge either when an optional timer expires, or via the ChannelRedirect + application or AMI Redirect action. + +ConfBridge +------------------ + * All participants in a bridge can now be kicked out of a conference room + by specifying the channel parameter as 'all' in the ConfBridge kick CLI + command, i.e., 'confbridge kick all' + + * CLI output for the 'confbridge list' command has been improved. When + displaying information about a particular bridge, flags will now be shown + for the participating users indicating properties of that user. + + * The ConfbridgeList event now contains the following fields: WaitMarked, + EndMarked, and Waiting. This displays additional properties about the + user's profile, as well as whether or not the user is waiting for a + Marked user to enter the conference. + + * Added a new option for conference recording, record_file_append. If enabled, + when the recording is stopped and then re-started, the existing recording + will be used and appended to. + + * ConfBridge now has the ability to set the language of announcements to the + conference. The language can be set on a bridge profile in confbridge.conf + or by the dialplan function CONFBRIDGE(bridge,language)=en. + +ControlPlayback +------------------ + * The channel variable CPLAYBACKSTATUS may now return the value + 'REMOTESTOPPED'. This occurs when playback is stopped by a remote interface, + such as AMI. See the AMI action ControlPlayback for more information. + +Directory +------------------ + * Added the 'a' option, which allows the caller to enter in an additional + alias for the user in the directory. This option must be used in conjunction + with the 'f', 'l', or 'b' options. Note that the alias for a user can be + specified in voicemail.conf. + +DumpChan +------------------ + * The output of DumpChan no longer includes the DirectBridge or IndirectBridge + fields. Instead, if a channel is in a bridge, it includes a BridgeID field + containing the unique ID of the bridge that the channel happens to be in. + +ForkCDR +------------------ + * ForkCDR no longer automatically resets the forked CDR. See the 'r' option + for more information. + + * Variables are no longer purged from the original CDR. See the 'v' option for + more information. + + * The 'A' option has been removed. The Answer time on a CDR is never updated + once set. + + * The 'd' option has been removed. The disposition on a CDR is a function of + the state of the channel and cannot be altered. + + * The 'D' option has been removed. Who the Party B is on a CDR is a function + of the state of the respective channels involved in the CDR and cannot be + altered. + + * The 'r' option has been changed. Previously, ForkCDR always reset the CDR + such that the start time and, if applicable, the answer time was updated. + Now, by default, ForkCDR simply forks the CDR, maintaining any times. The + 'r' option now triggers the Reset, setting the start time (and answer time + if applicable) to the current time. Note that the 'a' option still sets + the answer time to the current time if the channel was already answered. + + * The 's' option has been removed. A variable can be set on the original CDR + if desired using the CDR function, and removed from a forked CDR using the + same function. + + * The 'T' option has been removed. The concept of DONT_TOUCH and LOCKED no + longer applies in the CDR engine. + + * The 'v' option now prevents the copy of the variables from the original CDR + to the forked CDR. Previously the variables were always copied but were + removed from the original. This was changed as removing variables from a CDR + can have unintended side effects - this option allows the user to prevent + propagation of variables from the original to the forked without modifying + the original. + +MeetMe +------------------- + * Added the 'n' option to MeetMe to prevent application of the DENOISE + function to a channel joining a conference. Some channel drivers that vary + the number of audio samples in a voice frame will experience significant + quality problems if a denoiser is attached to the channel; this option gives + them the ability to remove the denoiser without having to unload func_speex. + +MixMonitor +------------------ + * The 'b' option now includes conferences as well as sounds played to the + participants. + + * The AUDIOHOOK_INHERIT function is no longer needed to keep a MixMonitor + running during a transfer. If a MixMonitor is started on a channel, + the MixMonitor will continue to record the audio passing through the + channel even in the presence of transfers. + +NoCDR +------------------ + * The NoCDR application is deprecated. Please use the CDR_PROP function to + disable CDRs. + + * While the NoCDR application will prevent CDRs for a channel from being + propagated to registered CDR backends, it will not prevent that data from + being collected. Hence, a subsequent call to ResetCDR or the CDR_PROP + function that enables CDRs on a channel will restore those records that have + not yet been finalized. + +ParkAndAnnounce +------------------- + * The app_parkandannounce module has been removed. The application + ParkAndAnnounce is now provided by the res_parking module. See the + res_parking changes for more information. + +Queue +------------------- + * Added queue available hint. The hint can be added to the dialplan using the + following syntax: exten,hint,Queue:{queue_name}_avail + For example, if the name of the queue is 'markq': + exten => 8501,hint,Queue:markq_avail + This will report 'InUse' if there are no logged in agents or no free agents. + It will report 'Idle' when an agent is free. + + * Queues now support a hint for member paused state. The hint uses the form + 'Queue:{queue_name}_pause_{member_name}', where {queue_name} and {member_name} + are the name of the queue and the name of the member to subscribe to, + respectively. For example: exten => 8501,hint,Queue:sales_pause_mark. + Members will show as In Use when paused. + + * The configuration options eventwhencalled and eventmemberstatus have been + removed. As a result, the AMI events QueueMemberStatus, AgentCalled, + AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be + sent. The "Variable" fields will also no longer exist on the Agent* events. + These events can be filtered out from a connected AMI client using the + eventfilter setting in manager.conf. + + * The queue log now differentiates between blind and attended transfers. A + blind transfer will result in a BLINDTRANSFER message with the destination + context and extension. An attended transfer will result in an + ATTENDEDTRANSFER message. This message will indicate the method by which + the attended transfer was completed: "BRIDGE" for a bridge merge, "APP" + for running an application on a bridge or channel, or "LINK" for linking + two bridges together with local channels. The queue log will also now detect + externally initiated blind and attended transfers and record the transfer + status accordingly. + + * When performing queue pause/unpause on an interface without specifying an + individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at + least one member of any queue exists for that interface. + + * Added the 'queue_log_realtime_use_gmt' option to have timestamps in GMT + for realtime queue log entries. + +ResetCDR +------------------ + * The 'e' option has been deprecated. Use the CDR_PROP function to re-enable + CDRs when they were previously disabled on a channel. + + * The 'w' and 'a' options have been removed. Dispatching CDRs to registered + backends occurs on an as-needed basis in order to preserve linkedid + propagation and other needed behavior. + +SayAlphaCase +------------------ + * A new application, this is similar to SayAlpha except that it supports + case sensitive playback of the specified characters. For example, + SayAlphaCase(u,aBc) will result in 'a uppercase b c'. + +SetAMAFlags +------------------ + * This application is deprecated in favor of CHANNEL(amaflags). + +SendDTMF +------------------ + * The SendDTMF application will now accept 'W' as valid input. This will cause + the application to delay one second while streaming DTMF. + +Stasis +------------------ + * A new application in Asterisk 12, this hands control of the channel calling + the application over to an external system. Currently, external systems + manipulate channels in Stasis through the Asterisk RESTful Interface (ARI). + +UserEvent +------------------ + * UserEvent will now handle duplicate keys by overwriting the previous value + assigned to the key. + + * In addition to AMI, UserEvent invocations will now be distributed to any + interested Stasis applications. + +VoiceMail +------------------ + * Mailboxes defined by app_voicemail MUST be referenced by the rest of the + system as mailbox@context. The rest of the system cannot add @default + to mailbox identifiers for app_voicemail that do not specify a context + any longer. It is a mailbox identifier format that should only be + interpreted by app_voicemail. + + * The voicemail.conf configuration file now has an 'alias' configuration + parameter for use with the Directory application. The voicemail realtime + database table schema has also been updated with an 'alias' column. + + +Codecs +------------------ + * Pass through support has been added for both VP8 and Opus. + + * Added format attribute negotiation for the Opus codec. Format attribute + negotiation is provided by the res_format_attr_opus module. + + +Core +------------------ + * Masquerades as an operation inside Asterisk have been effectively hidden + by the migration to the Bridging API. As such, many 'quirks' of Asterisk + no longer occur. This includes renaming of channels, "" channels, + dropping of frame/audio hooks, and other internal implementation details + that users had to deal with. This fundamental change has large implications + throughout the changes documented for this version. For more information + about the new core architecture of Asterisk, please see the Asterisk wiki. + + * Multiple parties in a bridge may now be transferred. If a participant in a + multi-party bridge initiates a blind transfer, a Local channel will be used + to execute the dialplan location that the transferer sent the parties to. If + a participant in a multi-party bridge initiates an attended transfer, + several options are possible. If the attended transfer results in a transfer + to an application, a Local channel is used. If the attended transfer results + in a transfer to another channel, the resulting channels will be merged into + a single bridge. + + * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is no longer channel + driver specific. If the channel variable is set on the transferrer channel, + the sound will be played to the target of an attended transfer. + + * The channel variable BRIDGEPEER becomes a comma separated list of peers in + a multi-party bridge. The BRIDGEPEER value can have a maximum of 10 peers + listed. Any more peers in the bridge will not be included in the list. + BRIDGEPEER is not valid in holding bridges like parking since those channels + do not talk to each other even though they are in a bridge. + + * The channel variable BRIDGEPVTCALLID is only valid for two party bridges + and will contain a value if the BRIDGEPEER's channel driver supports it. + + * A channel variable ATTENDEDTRANSFER is now set which indicates which channel + was responsible for an attended transfer in a similar fashion to + BLINDTRANSFER. + + * Modules using the Configuration Framework or Sorcery must have XML + configuration documentation. This configuration documentation is included + with the rest of Asterisk's XML documentation, and is accessible via CLI + commands. See the CLI changes for more information. + +AMI (Asterisk Manager Interface) +------------------ + * Major changes were made to both the syntax as well as the semantics of the + AMI protocol. In particular, AMI events have been substantially improved + in this version of Asterisk. For more information, please see the AMI + specification at https://wiki.asterisk.org/wiki/x/dAFRAQ + + * AMI events that reference a particular channel or bridge will now always + contain a standard set of fields. When multiple channels or bridges are + referenced in an event, fields for at least some subset of the channels + and bridges in the event will be prefixed with a descriptive name to avoid + name collisions. See the AMI event documentation on the Asterisk wiki for + more information. + + * The CLI command 'manager show commands' no longer truncates command names + longer than 15 characters and no longer shows authorization requirement + for commands. 'manager show command' now displays the privileges needed + for using a given manager command instead. + + * The SIPshowpeer action will now include a 'SubscribeContext' field for a + peer in its response if the peer has a subscribe context set. + + * The SIPqualifypeer action now acknowledges the request once it has + established that the request is against a known peer. It also issues a new + event, 'SIPQualifyPeerDone', once the qualify action has been completed. + + * The PlayDTMF action now supports an optional 'Duration' parameter. This + specifies the duration of the digit to be played, in milliseconds. + + * Added VoicemailRefresh action to allow an external entity to trigger mailbox + updates when changes occur instead of requiring the use of pollmailboxes. + + * Added a new action 'ControlPlayback'. The ControlPlayback action allows an + AMI client to manipulate audio currently being played back on a channel. The + supported operations depend on the application being used to send audio to + the channel. When the audio playback was initiated using the ControlPlayback + application or CONTROL STREAM FILE AGI command, the audio can be paused, + stopped, restarted, reversed, or skipped forward. When initiated by other + mechanisms (such as the Playback application), the audio can be stopped, + reversed, or skipped forward. + + * Channel related events now contain a snapshot of channel state, adding new + fields to many of these events. + + * The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed + in a future release. Please use the common 'Exten' field instead. + + * The AMI event 'UserEvent' from app_userevent now contains the channel state + fields. The channel state fields will come before the body fields. + + * The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and + 'UnParkedCall' have changed significantly in the new res_parking module. + + The 'Channel' and 'From' headers are gone. For the channel that was parked + or is coming out of parking, a 'Parkee' channel snapshot is issued and it + has a number of fields associated with it. The old 'Channel' header relayed + the same data as the new 'ParkeeChannel' header. + + The 'From' field was ambiguous and changed meaning depending on the event. + for most of these, it was the name of the channel that parked the call + (the 'Parker'). There is no longer a header that provides this channel name, + however the 'ParkerDialString' will contain a dialstring to redial the + device that parked the call. + + On UnParkedCall events, the 'From' header would instead represent the + channel responsible for retrieving the parkee. It receives a channel + snapshot labeled 'Retriever'. The 'from' field is is replaced with + 'RetrieverChannel'. + + Lastly, the 'Exten' field has been replaced with 'ParkingSpace'. + + * The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar + fashion has changed the field names 'StartExten' and 'StopExten' to + 'StartSpace' and 'StopSpace' respectively. + + * The deprecated use of | (pipe) as a separator in the channelvars setting in + manager.conf has been removed. + + * Channel Variables conveyed with a channel no longer contain the name of the + channel as part of the key field, i.e., ChanVariable(SIP/foo): bar=baz is now + ChanVariable: bar=baz. When multiple channels are present in a single AMI + event, the various ChanVariable fields will contain a suffix that specifies + which channel they correspond to. + + * The NewPeerAccount AMI event is no longer raised. The NewAccountCode AMI + event always conveys the AMI event for a particular channel. + + * All 'Reload' events have been consolidated into a single event type. This + event will always contain a Module field specifying the name of the module + and a Status field denoting the result of the reload. All modules now issue + this event when being reloaded. + + * The 'ModuleLoadReport' event has been removed. Most AMI connections would + fail to receive this event due to being connected after modules have loaded. + AMI connections that want to know when Asterisk is ready should listen for + the 'FullyBooted' event. + + * app_fax now sends the same send fax/receive fax events as res_fax. The + 'FaxSent' event is now the 'SendFAX' event, and the 'FaxReceived' event is + now the 'ReceiveFAX' event. + + * The 'MusicOnHold' event is now two events: 'MusicOnHoldStart' and + 'MusicOnHoldStop'. The sub type field has been removed. + + * The 'JabberEvent' event has been removed. It is not AMI's purpose to be a + carrier for another protocol. + + * The Bridge Manager action's 'Playtone' header now accepts more fine-grained + options. 'Channel1' and 'Channel2' may be specified in order to play a tone + to the specific channel. 'Both' may be specified to play a tone to both + channels. The old 'yes' option is still accepted as a way of playing the + tone to Channel2 only. + + * The AMI 'Status' response event to the AMI Status action replaces the + 'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to + indicate what bridge the channel is currently in. + + * The AMI 'Hold' event has been moved out of individual channel drivers, into + core, and is now two events: 'Hold' and 'Unhold'. The status field has been + removed. + + * The AMI events in app_queue have been made more consistent with each other. + Events that reference channels (QueueCaller* and Agent*) will show + information about each channel. The (infamous) 'Join' and 'Leave' AMI + events have been changed to 'QueueCallerJoin' and 'QueueCallerLeave'. + + * The 'MCID' AMI event now publishes a channel snapshot when available and + its non-channel-snapshot parameters now use either the "MCallerID" or + 'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead + of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named + parameters in the channel snapshot. + + * The AMI events 'Agentlogin' and 'Agentlogoff' have been renamed + 'AgentLogin' and 'AgentLogoff' respectively. + + * The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been + renamed "DAHDIChannel" since it does not convey an Asterisk channel name. + + * 'ChannelUpdate' events have been removed. + + * All AMI events now contain a 'SystemName' field, if available. + + * Local channel optimization is now conveyed in two events: + 'LocalOptimizationBegin' and 'LocalOptimizationEnd'. The Begin event is sent + when the Local channel driver begins attempting to optimize itself out of + the media path; the End event is sent after the channel halves have + successfully optimized themselves out of the media path. + + * Local channel information in events is now prefixed with 'LocalOne' and + 'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of + the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin', + and 'LocalOptimizationEnd' events. + + * The option 'allowmultiplelogin' can now be set or overriden in a particular + account. When set in the general context, it will act as the default + setting for defined accounts. + + * The 'BridgeAction' event was removed. It technically added no value, as the + Bridge Action already receives confirmation of the bridge through a + successful completion Event. + + * The 'BridgeExec' events were removed. These events duplicated the events that + occur in the Briding API, and are conveyed now through BridgeCreate, + BridgeEnter, and BridgeLeave events. + + * The 'RTCPSent'/'RTCPReceived' events have been significantly modified from + previous versions. They now report all SR/RR packets sent/received, and + have been restructured to better reflect the data sent in a SR/RR. In + particular, the event structure now supports multiple report blocks. + + * Added 'BlindTransfer' and 'AttendedTransfer' events. These events are + raised when a blind transfer/attended transfer completes successfully. + They contain information about the transfer that just completed, including + the location of the transfered channel. + + * Added a 'security' class to AMI which outputs the required fields for + security messages similar to the log messages from res_security_log + + * The AMI event 'ExtensionStatus' now contains a 'StatusText' field + that describes the status value in a human readable string. + +CDR (Call Detail Records) +------------------ + * Significant changes have been made to the behavior of CDRs. The CDR engine + was effectively rewritten and built on the Stasis message bus. For a full + definition of CDR behavior in Asterisk 12, please read the specification + on the Asterisk wiki (wiki.asterisk.org). + + * CDRs will now be created between all participants in a bridge. For each + pair of channels in a bridge, a CDR is created to represent the path of + communication between those two endpoints. This lets an end user choose who + to bill for what during bridge operations with multiple parties. + + * The duration, billsec, start, answer, and end times now reflect the times + associated with the current CDR for the channel, as opposed to a cumulative + measurement of all CDRs for that channel. + + * When a CDR is dispatched, user defined CDR variables from both parties are + included in the resulting CDR. If both parties have the same variable, only + the Party A value is provided. + + * Added a new option to cdr.conf, 'debug'. When enabled, significantly more + information regarding the CDR engine is logged as verbose messages. This + option should only be used if the behavior of the CDR engine needs to be + debugged. + + * Added CLI command 'cdr set debug {on|off}'. This toggles the 'debug' setting + normally configured in cdr.conf. + + * Added CLI command 'cdr show active {channel}'. When {channel} is not + specified, this command provides a summary of the channels with CDR + information and their statistics. When {channel} is specified, it shows + detailed information about all records associated with {channel}. + +CEL (Channel Event Logging) +------------------ + * CEL has undergone significant rework in Asterisk 12, and is now built on the + Stasis message bus. Please see the specification for CEL on the Asterisk + wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed + information. + + * The 'extra' field of all CEL events that use it now consists of a JSON blob + with key/value pairs which are defined in the Asterisk 12 CEL documentation. + + * BLINDTRANSFER events now report the transferee bridge unique + identifier, extension, and context in a JSON blob as the extra string + instead of the transferee channel name as the peer. + + * ATTENDEDTRANSFER events now report the peer as NULL and additional + information in the 'extra' string as a JSON blob. For transfers that occur + between two bridged channels, the 'extra' JSON blob contains the primary + bridge unique identifier, the secondary channel name, and the secondary + bridge unique identifier. For transfers that occur between a bridged channel + and a channel running an app, the 'extra' JSON blob contains the primary + bridge unique identifier, the secondary channel name, and the app name. + + * LOCAL_OPTIMIZE events have been added to convey local channel + optimizations with the record occurring for the semi-one channel and + the semi-two channel name in the peer field. + + * BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER, + CONF_EXIT, CONF_START, and CONF_END events have all been removed. These + events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT. The BRIDGE_ENTER + and BRIDGE_EXIT events are raised when a channel enters/exits any bridge, + regardless of whether or not that bridge happens to contain multiple + parties. + +CLI +------------------- + * When compiled with '--enable-dev-mode', the astobj2 library will now add + several CLI commands that allow for inspection of ao2 containers that + register themselves with astobj2. The CLI commands are 'astobj2 container + dump', 'astobj2 container stats', and 'astobj2 container check'. + + * Added specific CLI commands for bridge inspection. This includes 'bridge + show all', which lists all bridges in the system, and 'bridge show {id}', + which provides specific information about a bridge. + + * Added CLI command 'bridge destroy'. This will destroy the specified bridge, + ejecting the channels currently in the bridge. If the channels cannot + continue in the dialplan or application that put them in the bridge, they + will be hung up. + + * Added command 'bridge kick'. This will eject a single channel from a bridge. + + * Added commands to inspect and manipulate the registered bridge technologies. + This include 'bridge technology show', which lists the registered bridge + technologies, as well as 'bridge technology {suspend|unsuspend} {tech}', + which controls whether or not a registered bridge technology can be used + during smart bridge operations. If a technology is suspended, it will not + be used when a bridge technology is picked for channels; when unsuspended, + it can be used again. + + * The command 'config show help {module} {type} {option}' will show + configuration documentation for modules with XML configuration + documentation. When {module}, {type}, and {option} are omitted, a listing + of all modules with registered documentation is displayed. When {module} + is specified, a listing of all configuration types for that module is + displayed, along with their synopsis. When {module} and {type} are + specified, a listing of all configuration options for that type are + displayed along with their synopsis. When {module}, {type}, and {option} + are specified, detailed information for that configuration option is + displayed. + + * Added 'core show sounds' and 'core show sound' CLI commands. These display + a listing of all installed media sounds available on the system and + detailed information about a sound, respectively. + + * 'xmldoc dump' has been added. This CLI command will dump the XML + documentation DOM as a string to the specified file. The Asterisk core + will populate certain XML elements pulled from the source files with + additional run-time information; this command lets a user produce the + XML documentation with all information. + +Features +------------------- + * Parking has been pulled from core and placed into a separate module called + res_parking. See Parking changes below for more details. Configuration for + parking should now be performed in res_parking.conf. Configuration for + parking in features.conf is now unsupported. + + * Core attended transfers now have several new options. While performing an + attended transfer, the transferer now has the following options: + - *1 - cancel the attended transfer (configurable via atxferabort) + - *2 - complete the attended transfer, dropping out of the call + (configurable via atxfercomplete) + - *3 - complete the attended transfer, but stay in the call. This will turn + the call into a multi-party bridge (configurable via atxferthreeway) + - *4 - swap to the other party. Once an attended transfer has begun, this + options may be used multiple times (configurable via atxferswap) + + * For DTMF blind and attended transfers, the channel variable TRANSFER_CONTEXT + must be on the channel initiating the transfer to have any effect. + + * The BRIDGE_FEATURES channel variable would previously only set features for + the calling party and would set this feature regardless of whether the + feature was in caps or in lowercase. Use of a caps feature for a letter + will now apply the feature to the calling party while use of a lowercase + letter will apply that feature to the called party. + + * Add support for automixmon to the BRIDGE_FEATURES channel variable. + + * The channel variable DYNAMIC_PEERNAME is redundant with BRIDGEPEER and is + removed. The more useful DYNAMIC_WHO_ACTIVATED gives the channel name that + activated the dynamic feature. + + * The channel variables DYNAMIC_FEATURENAME and DYNAMIC_WHO_ACTIVATED are set + only on the channel executing the dynamic feature. Executing a dynamic + feature on the bridge peer in a multi-party bridge will execute it on all + peers of the activating channel. + + * You can now have the settings for a channel updated using the FEATURE() + and FEATUREMAP() functions inherited to child channels by setting + FEATURE(inherit)=yes. + + * automixmon now supports additional channel variables from automon including: + TOUCH_MIXMONITOR_PREFIX, TOUCH_MIXMONITOR_MESSAGE_START, + and TOUCH_MIXMONITOR_MESSAGE_STOP + + * A new general features.conf option 'recordingfailsound' has been added which + allowssetting a failure sound for a user tries to invoke a recording feature + such as automon or automixmon and it fails. + + * It is no longer necessary (or possible) to define the ATXFER_NULL_TECH in + features.c for atxferdropcall=no to work properly. This option now just + works. + +Logging +------------------- + * Added log rotation strategy 'none'. If set, no log rotation strategy will + be used. Given that this can cause the Asterisk log files to grow quickly, + this option should only be used if an external mechanism for log management + is preferred. + +Realtime +------------------ + * Dynamic realtime tables for SIP Users can now include a 'path' field. This + will store the path information for that peer when it registers. Realtime + tables can also use the 'supportpath' field to enable Path header support. + + * LDAP realtime configurations for SIP Users now have the AstAccountPathSupport + objectIdentifier. This maps to the supportpath option in sip.conf. + +Sorcery +------------------ + * Sorcery is a new data abstraction and object persistence API in Asterisk. It + provides modules a useful abstraction on top of the many storage mechanisms + in Asterisk, including the Asterisk Database, static configuration files, + static Realtime, and dynamic Realtime. It also provides a caching service. + Users can configure a hierarchy of data storage layers for specific modules + in sorcery.conf. + + * All future modules which utilize Sorcery for object persistence must have a + column named "id" within their schema when using the Sorcery realtime module. + This column must be able to contain a string of up to 128 characters in length. + +Security Events Framework +------------------ + * Security Event timestamps now use ISO 8601 formatted date/time instead of + the "seconds-microseconds" format that it was using previously. + +Stasis Message Bus +------------------ + * The Stasis message bus is a publish/subscribe message bus internal to + Asterisk. Many services in Asterisk are built on the Stasis message bus, + including AMI, ARI, CDRs, and CEL. Parameters controlling the operation of + Stasis can be configured in stasis.conf. Note that these parameters operate + at a very low level in Asterisk, and generally will not require changes. + +Channel Drivers +------------------ + * When a channel driver is configured to enable jiterbuffers, they are now + applied unconditionally when a channel joins a bridge. If a jitterbuffer + is already set for that channel when it enters, such as by the JITTERBUFFER + function, then the existing jitterbuffer will be used and the one set by + the channel driver will not be applied. + +chan_agent +------------------ + * chan_agent has been removed and replaced with AgentLogin and AgentRequest + dialplan applications provided by the app_agent_pool module. Agents are + connected with callers using the new AgentRequest dialplan application. + The Agents: device state is available to monitor the status of an + agent. See agents.conf.sample for valid configuration options. + + * The updatecdr option has been removed. Altering the names of channels on a + CDR is not supported - the name of the channel is the name of the channel, + and pretending otherwise helps no one. The AGENTUPDATECDR channel variable + has also been removed, for the same reason. + + * The endcall and enddtmf configuration options are removed. Use the + dialplan function CHANNEL(dtmf_features) to set DTMF features on the agent + channel before calling AgentLogin. + +chan_bridge +------------------ + * chan_bridge has been removed. Its functionality has been incorporated + directly into the ConfBridge application itself. + +chan_dahdi +------------------ + * Added the CLI command 'pri destroy span'. This will destroy the D-channel + of the specified span and its B-channels. Note that this command should + only be used if you understand the risks it entails. + + * The CLI command 'dahdi destroy channel' is now 'dahdi destroy channels'. + A range of channels can be specified to be destroyed. Note that this command + should only be used if you understand the risks it entails. + + * Added the CLI command 'dahdi create channels'. A range of channels can be + specified to be created, or the keyword 'new' can be used to add channels + not yet created. + + * The script specified by the chan_dahdi.conf mwimonitornotify option now gets + the exact configured mailbox name. For app_voicemail mailboxes this is + mailbox@context. + + * Added mwi_vm_boxes that also must be configured for ISDN MWI to be enabled. + +chan_iax2 +------------------ + * IPv6 support has been added. We are now able to bind to and + communicate using IPv6 addresses. + +chan_local +------------------ + * The /b option has been removed. + + * chan_local moved into the system core and is no longer a loadable module. + +chan_mobile +------------------ + * Added general support for busy detection. + + * Added ECAM command support for Sony Ericsson phones. + +chan_pjsip +------------------ + * A new SIP channel driver for Asterisk, chan_pjsip is built on the PJSIP + SIP stack. A collection of resource modules provides the bulk of the SIP + functionality. For more information on the new SIP channel driver, see + https://wiki.asterisk.org/wiki/x/JYGLAQ + +chan_sip +------------------ + * Added support for RFC 3327 "Path" headers. This can be enabled in sip.conf + using the 'supportpath' setting, either on a global basis or on a peer basis. + This setting enables Asterisk to route outgoing out-of-dialog requests via a + set of proxies by using a pre-loaded route-set defined by the Path headers in + the REGISTER request. See Realtime updates for more configuration information. + + * The SIP_CODEC family of variables may now specify more than one codec. Each + codec must be separated by a comma. The first codec specified is the + preferred codec for the offer. This allows a dialplan writer to specify both + audio and video codecs, e.g., Set(SIP_CODEC=ulaw,h264) + + * The 'callevents' parameter has been removed. Hold AMI events are now raised + in the core, and can be filtered out using the 'eventfilter' parameter + in manager.conf. + + * Added 'ignore_requested_pref'. When enabled, this will use the preferred + codecs configured for a peer instead of the requested codec. + + * The option "register_retry_403" has been added to chan_sip to work around + servers that are known to erroneously send 403 in response to valid + REGISTER requests and allows Asterisk to continue attepmting to connect. + +chan_skinny +------------------ + * Added the 'immeddialkey' parameter. If set, when the user presses the + configured key the already entered number will be immediately dialed. This + is useful when the dialplan allows for variable length pattern matching. + Valid options are '*' and '#'. + + * Added the 'callfwdtimeout' parameter. This configures the amount of time (in + milliseconds) before a call forward is considered to not be answered. + + * The 'serviceurl' parameter allows Service URLs to be attached to line + buttons. + + +Functions +------------------ + +AGENT +------------------ + * The password option has been disabled, as the AgentLogin application no + longer provides authentication. + +AUDIOHOOK_INHERIT +------------------ + * Due to changes in the Asterisk core, this function is no longer needed to + preserve a MixMonitor on a channel during transfer operations and dialplan + execution. It is effectively obsolete. + +CDR (function) +------------------ + * The 'amaflags' and 'accountcode' attributes for the CDR function are + deprecated. Use the CHANNEL function instead to access these attributes. + + * The 'l' option has been removed. When reading a CDR attribute, the most + recent record is always used. When writing a CDR attribute, all non-finalized + CDRs are updated. + + * The 'r' option has been removed, for the same reason as the 'l' option. + + * The 's' option has been removed, as LOCKED semantics no longer exist in the + CDR engine. + +CDR_PROP +------------------ + * A new function CDR_PROP has been added. This function lets you set properties + on a channel's active CDRs. This function is write-only. Properties accept + boolean values to set/clear them on the channel's CDRs. Valid properties + include: + - 'party_a' - make this channel the preferred Party A in any CDR between two + channels. If two channels have this property set, the creation time of the + channel is used to determine who is Party A. Note that dialed channels are + never Party A in a CDR. + - 'disable' - disable CDRs on this channel. This is analogous to the NoCDR + application when set to True, and analogous to the 'e' option in ResetCDR + when set to False. + +CHANNEL +------------------ + * Added the argument 'dtmf_features'. This sets the DTMF features that will be + enabled on a channel when it enters a bridge. Allowed values are 'T', 'K', + 'H', 'W', and 'X', and are analogous to the parameters passed to the Dial + application. + + * Added the argument 'after_bridge_goto'. This can be set to a parseable Goto + string, i.e., [[context],extension],priority. If set on a channel, if a + channel leaves a bridge but is not hung up it will resume dialplan execution + at that location. + +JITTERBUFFER +------------------ + * JITTERBUFFER now accepts an argument of 'disabled' which can be used + to remove jitterbuffers previously set on a channel with JITTERBUFFER. + The value of this setting is ignored when disabled is used for the argument. + +PJSIP_DIAL_CONTACTS +------------------ + * A new function provided by chan_pjsip, this function can be used in + conjunction with the Dial application to construct a dial string that will + dial all contacts on an Address of Record associated with a chan_pjsip + endpoint. + +PJSIP_MEDIA_OFFER +------------------ + * Provided by chan_pjsip, this function sets the codecs to be offerred on the + outbound channel prior to dialing. + +REDIRECTING +------------------ + * Redirecting reasons can now be set to arbitrary strings. This means + that the REDIRECTING dialplan function can be used to set the redirecting + reason to any string. It also allows for custom strings to be read as the + redirecting reason from SIP Diversion headers. + +SPEECH_ENGINE +------------------ + * The SPEECH_ENGINE function now supports read operations. When read from, it + will return the current value of the requested attribute. + +VMCOUNT: +------------------ + * Mailboxes defined by app_voicemail MUST be referenced by the rest of the + system as mailbox@context. The rest of the system cannot add @default + to mailbox identifiers for app_voicemail that do not specify a context + any longer. It is a mailbox identifier format that should only be + interpreted by app_voicemail. + + +Resources +------------------ + +res_agi (Asterisk Gateway Interface) +------------------ + * The manager event AGIExec has been split into AGIExecStart and AGIExecEnd. + + * The manager event AsyncAGI has been split into AsyncAGIStart, AsyncAGIExec, + and AsyncAGIEnd. + + * The CONTROL STREAM FILE command now accepts an offsetms parameter. This + will start the playback of the audio at the position specified. It will + also return the final position of the file in 'endpos'. + + * The CONTROL STREAM FILE command will now populate the CPLAYBACKSTATUS + channel variable if the user stopped the file playback or if a remote + entity stopped the playback. If neither stopped the playback, it will + indicate the overall success/failure of the playback. If stopped early, + the final offset of the file will be set in the CPLAYBACKOFFSET channel + variable. + + * The SAY ALPHA command now accepts an additional parameter to control + whether it specifies the case of uppercase, lowercase, or all letters to + provide functionality similar to SayAlphaCase. + +res_ari (Asterisk RESTful Interface) (and others) +------------------ + * The Asterisk RESTful Interface (ARI) provides a mechanism to expose and + control telephony primitives in Asterisk by remote client. This includes + channels, bridges, endpoints, media, and other fundamental concepts. Users + of ARI can develop their own communications applications, controlling + multiple channels using an HTTP RESTful interface and receiving JSON events + about the objects via a WebSocket connection. ARI can be configured in + Asterisk via ari.conf. For more information on ARI, see + https://wiki.asterisk.org/wiki/x/0YCLAQ + +res_parking +------------------- + * Parking has been extracted from the Asterisk core as a loadable module, + res_parking. Configuration for parking is now provided by res_parking.conf. + Configuration through features.conf is no longer supported. + + * res_parking uses the configuration framework. If an invalid configuration is + supplied, res_parking will fail to load or fail to reload. Previously, + invalid configurations would generally be accepted, with certain errors + resulting in individually disabled parking lots. + + * Parked calls are now placed in bridges. While this is largely an + architectural change, it does have implications on how channels in a parking + lot are viewed. For example, commands that display channels in bridges will + now also display the channels in a parking lot. + + * The order of arguments for the new parking applications have been modified. + Timeout and return context/exten/priority are now implemented as options, + while the name of the parking lot is now the first parameter. See the + application documentation for Park, ParkedCall, and ParkAndAnnounce for more + in-depth information as well as syntax. + + * Extensions are by default no longer automatically created in the dialplan to + park calls or pickup parked calls. Generation of dialplan extensions can be + enabled using the 'parkext' configuration option. + + * ADSI functionality for parking is no longer supported. The 'adsipark' + configuration option has been removed as a result. + + * The PARKINGSLOT channel variable has been deprecated in favor of + PARKING_SPACE to match the naming scheme of the new system. + + * PARKING_SPACE and PARKEDLOT channel variables will now be set for a parked + channel even when the configuration option 'comebactoorigin' is enabled. + + * A new CLI command 'parking show' has been added. This allows a user to + inspect the parking lots that are currently in use. + 'parking show ' will also show the parked calls in a specific + parking lot. + + * The CLI command 'parkedcalls' is now deprecated in favor of + 'parking show '. + + * The AMI command 'ParkedCalls' will now accept a 'ParkingLot' argument which + can be used to get a list of parked calls for a specific parking lot. + + * The AMI command 'Park' field 'Channel2' has been deprecated and replaced + with 'TimeoutChannel'. If both 'Channel2' and 'TimeoutChannel' are + specified, 'TimeoutChannel' will be used. The field 'TimeoutChannel' is no + longer a required argument. + + * The ParkAndAnnounce application is now provided through res_parking instead + of through the separate app_parkandannounce module. + + * ParkAndAnnounce will no longer go to the next position in dialplan on timeout + by default. Instead, it will follow the timeout rules of the parking lot. The + old behavior can be reproduced by using the 'c' option. + + * Dynamic parking lots will now fail to be created under the following + conditions: + - if the parking lot specified by PARKINGDYNAMIC does not exist + - if they require exclusive park and parkedcall extensions which overlap + with existing parking lots. + + * Dynamic parking lots will be cleared on reload for dynamic parking lots that + currently contain no calls. Dynamic parking lots containing parked calls + will persist through the reloads without alteration. + + * If 'parkext_exclusive' is set for a parking lot and that extension is + already in use when that parking lot tries to register it, this is now + considered a parking system configuration error. Configurations which do + this will be rejected. + + * Added channel variable PARKER_FLAT. This contains the name of the extension + that would be used if 'comebacktoorigin' is enabled. This can be useful when + comebacktoorigin is disabled, but the dialplan or an external control + mechanism wants to use the extension in the park-dial context that was + generated to re-dial the parker on timeout. + +res_pjsip (and many others) +------------------ + * A large number of resource modules make up the SIP stack based on pjsip. + The chan_pjsip channel driver users these resource modules to provide + various SIP functionality in Asterisk. The majority of configuration for + these modules is performed in pjsip.conf. Other modules may use their + own configuration files. + + * Added 'set_var' option for an endpoint. For each variable specified that + variable gets set upon creation of a channel involving the endpoint. + +res_rtp_asterisk +------------------ + * ICE/STUN/TURN support in res_rtp_asterisk has been made optional. To enable + them, an Asterisk-specific version of PJSIP needs to be installed. + Tarballs are available from https://github.com/asterisk/pjproject/tags/. + +res_statsd/res_chan_stats +------------------ + * A new resource module, res_statsd, has been added, which acts as a statsd + client. This module allows Asterisk to publish statistics to a statsd + server. In conjunction with res_chan_stats, it will publish statistics about + channels to the statsd server. It can be configured via res_statsd.conf. + +res_xmpp +------------------ + * Device state for XMPP buddies is now available using the following format: + XMPP// + If any resource is available the device state is considered to be not in use. + If no resources exist or all are unavailable the device state is considered + to be unavailable. + + +Scripts +------------------ + +Realtime/Database Scripts +------------------ + * Asterisk previously included example db schemas in the contrib/realtime/ + directory of the source tree. This has been replaced by a set of database + migrations using the Alembic framework. This allows you to use alembic to + initialize the database for you. It will also serve as a database migration + tool when upgrading Asterisk in the future. + + See contrib/ast-db-manage/README.md for more details. + +sip_to_res_pjsip.py +------------------- + * A new script has been added in the contrib/scripts/sip_to_res_pjsip folder. + This python script will convert an existing sip.conf file to a + pjsip.conf file, for use with the chan_pjsip channel driver. This script + is meant to be an aid in converting an existing chan_sip configuration to + a chan_pjsip configuration, but it is expected that configuration beyond + what the script provides will be needed. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 10 to Asterisk 11 -------------------- +------------------------------------------------------------------------------ + +Build System +------------------- + * The Asterisk build system will now build and install a shared library + (libasteriskssl.so) used to wrap various initialization and shutdown functions + from the libssl and libcrypto libraries provided by OpenSSL. This is done so + that Asterisk can ensure that these functions do *not* get called by any + modules that are loaded into Asterisk, since they should only be called once + in any single process. If desired, this feature can be disabled by supplying + the "--disable-asteriskssl" option to the configure script. + + * A new make target, 'full', has been added to the Makefile. This performs + the same compilation actions as make all, but will also scan the entirety of + each source file for documentation. This option is needed to generate AMI + event documentation. Note that your system must have Python in order for + this make target to succeed. + + * The optimization portion of the build system has been reworked to avoid + broken builds on certain architectures. All architecture-specific + optimization has been removed in favor of using -march=native to allow gcc + to detect the environment in which it is running when possible. This can + be toggled as BUILD_NATIVE under "Compiler Flags" in menuselect. + + * BUILD_CFLAGS and BUILD_LDFLAGS can now be passed to menuselect, e.g., + make BUILD_CFLAGS="whatever" BUILD_LDFLAGS="whatever" + + * Remove "asterisk/version.h" in favor of "asterisk/ast_version.h". If you + previously parsed the header file to obtain the version of Asterisk, you + will now have to go through Asterisk to get the version information. + + +Applications +------------------- + +Bridge +------------------- + * Added 'F()' option. Similar to the dial option, this can be supplied with + arguments indicating where the callee should go after the caller is hung up, + or without options specified, the priority after the Queue will be used. + + +ConfBridge +------------------- + * Added menu action admin_toggle_mute_participants. This will mute / unmute + all non-admin participants on a conference. The confbridge configuration + file also allows for the default sounds played to all conference users when + this occurs to be overriden using sound_participants_unmuted and + sound_participants_muted. + + * Added menu action participant_count. This will playback the number of + current participants in a conference. + + * Added announcement configuration option to user profile. If set the sound + file will be played to the user, and only the user, upon joining the + conference bridge. + + * Added record_file_append option that defaults to "yes", but if set to no + will create a new file between each start/stop recording. + + +Dial +------------------- + * Added 'b' and 'B' options to Dial that execute a Gosub on callee and caller + channels respectively before the callee channels are called. + + +ExternalIVR +------------------- + * Added support for IPv6. + + * Add interrupt ('I') command to ExternalIVR. Sending this command from an + external process will cause the current playlist to be cleared, including + stopping any audio file that is currently playing. This is useful when you + want to interrupt audio playback only when specific DTMF is entered by the + caller. + + +FollowMe +------------------- + * A new option, 'I' has been added to app_followme. By setting this option, + Asterisk will not update the caller with connected line changes when they + occur. This is similar to app_dial and app_queue. + + * The 'N' option is now ignored if the call is already answered. + + * Added 'b' and 'B' options to FollowMe that execute a Gosub on callee + and caller channels respectively before the callee channels are called. + + * The winning FollowMe outgoing call is now put on hold if the caller put it on + hold. + + +MixMonitor +------------------ + * MixMonitor hooks now have IDs associated with them which can be used to + assign a target to StopMixMonitor. Use of MixMonitor's i(variable) option + will allow storage of the MixMontior ID in a channel variable. StopMixmonitor + now accepts that ID as an argument. + + * Added 'm' option, which stores a copy of the recording as a voicemail in the + indicated mailboxes. + + +MySQL +------------------- + * The connect action in app_mysql now allows you to specify a port number to + connect to. This is useful if you run a MySQL server on a non-standard + port number. + + +OSP Applications +------------------- + * Increased the default number of allowed destinations from 5 to 12. + + +Page +------------------- + * The app_page application now no longer depends on DAHDI or app_meetme. It + has been re-architected to use app_confbridge internally. + + +Queue +------------------- + * Added queue options autopausebusy and autopauseunavail for automatically + pausing a queue member when their device reports busy or congestion. + + * The 'ignorebusy' option for queue members has been deprecated in favor of + the option 'ringinuse. Also a 'queue set ringinuse' CLI command has been + added as well as an AMI action 'QueueMemberRingInUse' to set this variable on a + per interface basis. Individual ringinuse values can now be set in + queues.conf via an argument to member definitions. Lastly, the queue + 'ringinuse' setting now only determines defaults for the per member + 'ringinuse' setting and does not override per member settings like it does + in earlier versions. + + * Added 'F()' option. Similar to the dial option, this can be supplied with + arguments indicating where the callee should go after the caller is hung up, + or without options specified, the priority after the Queue will be used. + + * Added new option log_member_name_as_agent, which will cause the membername to + be logged in the agent field for ADDMEMBER and REMOVEMEMBER queue events if a + state_interface has been set. + + * Add queue monitoring hints. exten => 8501,hint,Queue:markq. + + * App_queue will now play periodic announcements for the caller that + holds the first position in the queue while waiting for answer. + +SayUnixTime +------------------ + * Added 'j' option to SayUnixTime. SayUnixTime no longer auto jumps to extension + when receiving DTMF. Use the 'j' option to enable extension jumping. Also + changed arguments to SayUnixTime so that every option is truly optional even + when using multiple options (so that j option could be used without having to + manually specify timezone and format) There are other benefits, e.g., format + can now be used without specifying time zone as well. + + +Voicemail +------------------ + * Addition of the VM_INFO function - see Function changes. + + * The imapserver, imapport, and imapflags configuration options can now be + overriden on a user by user basis. + + * When voicemail plays a message's envelope with saycid set to yes, when + reaching the caller id field it will play a recording of a file with the same + base name as the sender's callerid if there is a similarly named file in + /recordings/callerids/ + + * Voicemails now contains a unique message identifier "msg_id", which is stored + in the message envelope with the sound files. IMAP backends will now store + the message identifiers with a header of "X-Asterisk-VM-Message-ID". ODBC + backends will store the message identifier in a "msg_id" column. See + UPGRADE.txt for more information. + + * Added VoiceMailPlayMsg application. This application will play a single + voicemail message from a mailbox. The result of the application, SUCCESS or + FAILED, is stored in the channel variable VOICEMAIL_PLAYBACKSTATUS. + + +Functions +------------------ + * Hangup handlers can be attached to channels using the CHANNEL() function. + Hangup handlers will run when the channel is hung up similar to the h + extension. The hangup_handler_push option will push a GoSub compatible + location in the dialplan onto the channel's hangup handler stack. The + hangup_handler_pop option will remove the last added location, and optionally + replace it with a new GoSub compatible location. The hangup_handler_wipe + option will remove all locations on the stack, and optionally add a new + location. + + * The expression parser now recognizes the ABS() absolute value function, + which will convert negative floating point values to positive values. + + * FAXOPT(faxdetect) will enable a generic fax detect framehook for dialplan + control of faxdetect. + + * Addition of the VM_INFO function that can be used to retrieve voicemail + user information, such as the email address and full name. + The MAILBOX_EXISTS dialplan function has been deprecated in favour of + VM_INFO. + + * The REDIRECTING function now supports the redirecting original party id + and reason. + + * Two new functions have been added: FEATURE() and FEATUREMAP(). FEATURE() + lets you set some of the configuration options from the [general] section + of features.conf on a per-channel basis. FEATUREMAP() lets you customize + the key sequence used to activate built-in features, such as blindxfer, + and automon. See the built-in documentation for details. + + * MESSAGE(from) for incoming SIP messages now returns "display-name" + instead of simply the uri. This is the format that MessageSend() can use + in the from parameter for outgoing SIP messages. + + * Added the PRESENCE_STATE function. This allows retrieving presence state + information from any presence state provider. It also allows setting + presence state information from a CustomPresence presence state provider. + See AMI/CLI changes for related commands. + + * Added the AMI_CLIENT function to make manager account attributes available + to the dialplan. It currently supports returning the current number of + active sessions for a given account. + + * Added support for private party ID information to CALLERID, CONNECTEDLINE, + and the REDIRECTING functions. + + +Channel Drivers +------------------ + +chan_local +------------------ + * Added a manager event "LocalBridge" for local channel call bridges between + the two pseudo-channels created. + + +chan_dahdi +------------------ + * Added dialtone_detect option for analog ports to disconnect incoming + calls when dialtone is detected. + + * Added option colp_send to send ISDN connected line information. Allowed + settings are block, to not send any connected line information; connect, to + send connected line information on initial connect; and update, to send + information on any update during a call. Default is update. + + * Add options namedcallgroup and namedpickupgroup to support installations + where a higher number of groups (>64) is required. + + * Added support to use private party ID information with PRI calls. + + +chan_motif +------------------ + * A new channel driver named chan_motif has been added which provides support for + Google Talk and Jingle in a single channel driver. This new channel driver includes + support for both audio and video, RFC2833 DTMF, all codecs supported by Asterisk, + hold, unhold, and ringing notification. It is also compliant with the current Jingle + specification, current Google Jingle specification, and the original Google Talk + protocol. + + +chan_ooh323 +------------------ + * Added NAT support for RTP. Setting in config is 'nat', which can be set + globally and overriden on a peer by peer basis. + + * Direct media functionality has been added. Options in config are: + directmedia (directrtp) and directrtpsetup (earlydirect) + + * ChannelUpdate events now contain a CallRef header. + + +chan_sip +------------------ + * Asterisk will no longer substitute CID number for CID name in the display + name field if CID number exists without a CID name. This change improves + compatibility with certain device features such as Avaya IP500's directory + lookup service. + + * A new setting for autocreatepeer (autocreatepeer=persistent) allows peers + created using that setting to not be removed during SIP reload. + + * Added settings recordonfeature and recordofffeature. When receiving an INFO + request with a "Record:" header, this will turn the requested feature on/off. + Allowed values are 'automon', 'automixmon', and blank to disable. Note that + dynamic features must be enabled and configured properly on the requesting + channel for this to function properly. + + * Add support to realtime for the 'callbackextension' option. + + * When multiple peers exist with the same address, but differing + callbackextension options, incoming requests that are matched by address + will be matched to the peer with the matching callbackextension if it is + available. + + * Two new NAT options, auto_force_rport and auto_comedia, have been added + which set the force_rport and comedia options automatically if Asterisk + detects that an incoming SIP request crossed a NAT after being sent by + the remote endpoint. + + * The default global nat setting in sip.conf has been changed from force_rport + to auto_force_rport. + + * NAT settings are now a combinable list of options. The equivalent of the + deprecated nat=yes is nat=force_rport,comedia. nat=no behaves as before. + + * Adds an option send_diversion which can be disabled to prevent + diversion headers from automatically being added to INVITE requests. + + * Add support for lightweight NAT keepalive. If enabled a blank packet will + be sent to the remote host at a given interval to keep the NAT mapping open. + This can be enabled using the keepalive configuration option. + + * Add option 'tonezone' to specify country code for indications. This option + can be set both globally and overridden for specific peers. + + * The SIP Security Events Framework now supports IPv6. + + * Add a new setting for directmedia, 'outgoing', to alleviate INVITE glares + between multiple user agents. When set, for directmedia reinvites, + Asterisk will not send an immediate reinvite on an incoming call leg. This + option is useful when peered with another SIP user agent that is known to + send immediate direct media reinvites upon call establishment. + + * Add support for WebSocket transport. This can be configured using 'ws' or 'wss' + as the transport. + + * Add options subminexpiry and submaxexpiry to set limits of subscription + timer independently from registration timer settings. The setting of the + registration timer limits still is done by options minexpiry, maxexpiry + and defaultexpiry. For backwards compatibility the setting of minexpiry + and maxexpiry also is used to configure the subscription timer limits if + subminexpiry and submaxexpiry are not set in sip.conf. + + * Set registration timer limits to default values when reloading sip + configuration and values are not set by configuration. + + * Add options namedcallgroup and namedpickupgroup to support installations + where a higher number of groups (>64) is required. + + * When a MESSAGE request is received, the address the request was received from + is now saved in the SIP_RECVADDR variable. + + * Add ANI2/OLI parsing for SIP. The "From" header in INVITE requests is now + parsed for the presence of "isup-oli", "ss7-oli", or "oli" tags. If present, + the ANI2/OLI information is set on the channel, which can be retrieved using + the CALLERID function. + + * Peers can now be configured to support negotiation of ICE candidates using + the setting icesupport. See res_rtp_asterisk changes for more information. + + * Added support for format attribute negotiation. See the Codecs changes for + more information. + + * Extra headers specified with SIPAddHeader are sent with the REFER message + when using Transfer application. See refer_addheaders in sip.conf.sample. + + * Added support to use private party ID information with calls. + + * Adds an option discard_remote_hold_retrieval that when set stops telling + the peer to start music on hold. + + +chan_skinny +------------------ + * Added skinny version 17 protocol support. + + +chan_unistim +-------------------- + * Added option 'dtmf_duration' allowing playback time of DTMF tones to be set + + * Modified option 'date_format' to allow options to display date in 31Jan and Jan31 + formats as options 0 and 1. The previous options 0 and 1 now map to options 2 and 3 + as per the UNISTIM protocol. + + * Fixed issues with dialtone not matching indications.conf and mute stopping rx + as well as tx. Also fixed issue with call "Timer" displaying as French "Dur\E9e" + + * Added ability to use multiple lines for a single phone. This allows multiple + calls to occur on a single phone, using callwaiting and switching between calls. + + * Added option 'sharpdial' allowing end dialing by pressing # key + + * Added option 'interdigit_timer' to control phone dial timeout + + * Added options 'cwstyle', 'cwvolume' controlling callwaiting appearance + + * Added global 'debug' option, that enables debug in channel driver + + * Added ability to translate on-screen menu in multiple languages. Tested on + Russian languages. Supported encodings: ISO 8859-1, ISO 8859-2, ISO 8859-4, + ISO 8859-5, ISO 2022-JP. Language controlled by 'language' and on-screen + menu of phone + + * In addition to English added French and Russian languages for on-screen menus + + * Reworked dialing number input: added dialing by timeout, immediate dial on + on dialplan compare, phone number length now not limited by screen size + + * Added ability to pickup a call using features.conf defined value and + on-screen key + + +chan_mISDN: +------------------ + * Add options namedcallgroup and namedpickupgroup to support installations + where a higher number of groups (>64) is required. + + * Added support to use private party ID information with calls. + + +Core +------------------ + * The minimum DTMF duration can now be configured in asterisk.conf + as "mindtmfduration". The default value is (as before) set to 80 ms. + (previously it was only available in source code) + + * Named ACLs can now be specified in acl.conf and used in configurations that + use ACLs. As a general rule, if some derivative of 'permit' or 'deny' is + used to specify an ACL, a similar form of 'acl' will add a named ACL to the + working ACL. In addition, some CLI commands have been added to provide + show information and allow for module reloading - see CLI Changes. + + * Rules in ACLs (specified using 'permit' and 'deny') can now contain multiple + items (separated by commas), and items in the rule can be negated by prefixing + them with '!'. This simplifies Asterisk Realtime configurations, since it is no + longer necessray to control the order that the 'permit' and 'deny' columns are + returned from queries. + + * DUNDi now allows the built in variables ${NUMBER}, ${IPADDR} and ${SECRET} to + be used within the dynamic weight attribute when specifying a mapping. + + * CEL backends can now be configured to show "USER_DEFINED" in the EventName + header, instead of putting the user defined event name there. When enabled + the UserDefType header is added for user defined events. This feature is + enabled with the setting show_user_defined. + + * Macro has been deprecated in favor of GoSub. For redirecting and connected + line purposes use the following variables instead of their macro equivalents: + REDIRECTING_SEND_SUB, REDIRECTING_SEND_SUB_ARGS, CONNECTED_LINE_SEND_SUB, + CONNECTED_LINE_SEND_SUB_ARGS. For CCSS, use cc_callback_sub instead of + cc_callback_macro in channel configurations. + + * Asterisk can now use a system-provided NetBSD editline library (libedit) if it + is available. + + * Call files now support the "early_media" option to connect with an outgoing + extension when early media is received. + + * Added support to use private party ID information with calls. + + +AGI +------------------ + * A new channel variable, AGIEXITONHANGUP, has been added which allows + Asterisk to behave like it did in Asterisk 1.4 and earlier where the + AGI application would exit immediately after a channel hangup is detected. + + * IPv6 addresses are now supported when using FastAGI (agi://). Hostnames + are resolved and each address is attempted in turn until one succeeds or + all fail. + + +AMI (Asterisk Manager Interface) +------------------ + * The originate action now has an option "EarlyMedia" that enables the + call to bridge when we get early media in the call. Previously, + early media was disregarded always when originating calls using AMI. + + * Added setvar= option to manager accounts (much like sip.conf) + + * Originate now generates an error response if the extension given is not found + in the dialplan + + * MixMonitor will now show IDs associated with the mixmonitor upon creating + them if the i(variable) option is used. StopMixMonitor will accept + MixMonitorID as an option to close specific MixMonitors. + + * The SIPshowpeer manager action response field "SIP-Forcerport" has been + updated to include information about peers configured with + nat=auto_force_rport by returning "A" if auto_force_rport is set and nat is + detected, and "a" if it is set and nat is not detected. "Y" and "N" are still + returned if auto_force_rport is not enabled. + + * Added SIPpeerstatus manager command which will generate PeerStatus events + similar to the existing PeerStatus events found in chan_sip on demand. + + * Hangup now can take a regular expression as the Channel option. If you want + to hangup multiple channels, use /regex/ as the Channel option. Existing + behavior to hanging up a single channel is unchanged, but if you pass a regex, + the manager will send you a list of channels back that were hung up. + + * Support for IPv6 addresses has been added. + + * AMI Events can now be documented in the Asterisk source. Note that AMI event + documentation is only generated when Asterisk is compiled using 'make full'. + See the CLI section for commands to display AMI event information. + + * The AMI Hangup event now includes the AccountCode header so you can easily + correlate with AMI Newchannel events. + + * The QueueMemberStatus, QueueMemberAdded, and QueueMember events now include + the StateInterface of the queue member. + + * Added AMI event SessionTimeout in the Call category that is issued when a + call is terminated due to either RTP stream inactivity or SIP session timer + expiration. + + * CEL events can now contain a user defined header UserDefType. See core + changes for more information. + + * OOH323 ChannelUpdate events now contain a CallRef header. + + * Added PresenceState command. This command will report the presence state for + the given presence provider. + + * Added Parkinglots command. This will list all parking lots as a series of + AMI Parkinglot events. + + * Added MessageSend command. This behaves in the same manner as the + MessageSend application, and is a technolgoy agnostic mechanism to send out + of call text messages. + + * Added "message" class authorization. This grants an account permission to + send out of call messages. Write-only. + + +CLI +------------------- + * The "dialplan add include" command has been modified to create context a context + if one does not already exist. For instance, "dialplan add include foo into bar" + will create context "bar" if it does not already exist. + + * A "dialplan remove context" command has been added to remove a context from + the dialplan + + * The "mixmonitor list " command will now show MixMonitor ID, and the + filenames of all running mixmonitors on a channel. + + * The debug level of "pri set debug" is now a bitmask ranging from 0 to 15 if + numeric instead of 0, 1, or 2. + + * "stun show status" will show a table describing how the STUN client is + behaving. + + * "acl show [named acl]" will show information regarding a Named ACL. The + acl module can be reloaded with "reload acl". + + * Added CLI command to display AMI event information - "manager show events", + which shows a list of all known and documented AMI events, and "manager show + event [event name]", which shows detail information about a specific AMI + event. + + * The result of the CLI command "queue show" now includes the state interface + information of the queue member. + + * The command "core set verbose" will now set a separate level of logging for + each remote console without affecting any other console. + + * Added command "cdr show pgsql status" to check connection status + + * "sip show channel" will now display the complete route set. + + * Added "presencestate list" command. This command will list all custom + presence states that have been set by using the PRESENCE_STATE dialplan + function. + + * Added "presencestate change [,[,message[,options]]]" + command. This changes a custom presence to a new state. + + +Codecs +------------------- + * Codec lists may now be modified by the '!' character, to allow succinct + specification of a list of codecs allowed and disallowed, without the + requirement to use two different keywords. For example, to specify all + codecs except g729 and g723, one need only specify allow=all,!g729,!g723. + + * Add support for parsing SDP attributes, generating SDP attributes, and + passing it through. This support includes codecs such as H.263, H.264, SILK, + and CELT. You are able to set up a call and have attribute information pass. + This should help considerably with video calls. + + * The iLBC codec can now use a system-provided iLBC library if one is installed, + just like the GSM codec. + +DUNDi changes +------------- + * Added CLI commands dundi show hints and dundi show cache which will list DUNDi + 'DONTASK' hints in the cache and list all DUNDi cache entires respectively. + +Logging +------------------- + * Asterisk version and build information is now logged at the beginning of a + log file. + + * Threads belonging to a particular call are now linked with callids which get + added to any log messages produced by those threads. Log messages can now be + easily identified as involved with a certain call by looking at their call id. + Call ids may also be attached to log messages for just about any case where + it can be determined to be related to a particular call. + + * Each logging destination and console now have an independent notion of the + current verbosity level. Logger.conf now allows an optional argument to + the 'verbose' specifier, indicating the level of verbosity sent to that + particular logging destination. Additionally, remote consoles now each + have their own verbosity level. The command 'core set verbose' will now set + a separate level for each remote console without affecting any other + console. + + +Music On Hold +------------------- + * Added 'announcement' option which will play at the start of MOH and between + songs in modes of MOH that can detect transitions between songs (eg. + files, mp3, etc). + + +Parking +------------------- + * New per parking lot options: comebackcontext and comebackdialtime. See + configs/features.conf.sample for more details. + + * Channel variable PARKER is now set when comebacktoorigin is disabled in + a parking lot. + + * Channel variable PARKEDCALL is now set with the name of the parking lot + when a timeout occurs. + + +CDRs +------------------- + +CDR Postgresql Driver +------------------- + * Added command "cdr show pgsql status" to check connection status + + +CDR Adaptive ODBC Driver +------------------- + * Added schema option for databases that support specifying a schema. + + +Resource Modules +------------------- + +Calendars +------------------- + * A CALENDAR_SUCCESS=1/0 channel variable is now set to show whether or not + CALENDAR_WRITE has completed successfully. + + +res_rtp_asterisk +------------------- + * A new option, 'probation' has been added to rtp.conf + RTP in strictrtp mode can now require more than 1 packet to exit learning + mode with a new source (and by default requires 4). The probation option + allows the user to change the required number of packets in sequence to any + desired value. Use a value of 1 to essentially restore the old behavior. + Also, with strictrtp on, Asterisk will now drop all packets until learning + mode has successfully exited. These changes are based on how pjmedia handles + media sources and source changes. + + * Add support for ICE/STUN/TURN in res_rtp_asterisk. This option can be + enabled or disabled using the icesupport setting. A variety of other + settings have been introduced to configure STUN/TURN connections. + + +res_corosync +------------------- + * A new module, res_corosync, has been introduced. This module uses the + Corosync cluster enginer (http://www.corosync.org) to allow a local cluster + of Asterisk servers to both Message Waiting Indication (MWI) and/or + Device State (presence) information. This module is very similar to, and + is a replacement for the res_ais module that was in previous releases of + Asterisk. + + +res_xmpp +------------------- + * This module adds a cleaned up, drop-in replacement for res_jabber called + res_xmpp. This provides the same externally facing functionality but is + implemented differently internally. res_jabber has been deprecated in favor + of res_xmpp; please see the UPGRADE.txt file for more information. + + +Scripts +------------------- + * The safe_asterisk script has been updated to allow several of its parameters + to be set from environment variables. This also enables a custom run + directory of Asterisk to be specified, instead of defaulting to /tmp. + + * The live_ast script will now look for the LIVE_AST_BASE_DIR variable and use + its value to determine the directory to assume is the top-level directory of + the source tree. If the variable is not set, it defaults to the current + behavior and uses the current working directory. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 1.8 to Asterisk 10 ------------------- +------------------------------------------------------------------------------ + +Text Messaging +-------------- + * Asterisk now has protocol independent support for processing text messages + outside of a call. Messages are routed through the Asterisk dialplan. + SIP MESSAGE and XMPP are currently supported. There are options in + jabber.conf and sip.conf to allow enabling these features. + -> jabber.conf: see the "sendtodialplan" and "context" options. + -> sip.conf: see the "accept_outofcall_message", "auth_message_requests" + and "outofcall_message_context" options. + The MESSAGE() dialplan function and MessageSend() application have been + added to go along with this functionality. More detailed usage information + can be found on the Asterisk wiki (http://wiki.asterisk.org/). + * If real-time text support (T.140) is negotiated, it will be preferred for + sending text via the SendText application. For example, via SIP, messages + that were once sent via the SIP MESSAGE request would be sent via RTP if + T.140 text is negotiated for a call. + +Parking +------- + * parkedmusicclass can now be set for non-default parking lots. + +Asterisk Manager Interface +-------------------------- + * PeerStatus now includes Address and Port. + * Added Hold events for when the remote party puts the call on and off hold + for chan_dahdi ISDN channels. + * Added new action MeetmeListRooms to list active conferences (shows same + data as "meetme list" at the CLI). + * DAHDIShowChannels, SIPshowpeer, SIPpeers, and IAXpeers now contains a + Description field that is set by 'description' in the channel configuration + file. + * Added Uniqueid header to UserEvent. + * Added new action FilterAdd to control event filters for the current session. + This requires the system permission and uses the same filter syntax as + filters that can be defined in manager.conf + * The Unlink event is now a Bridge event with Bridgestatus: Unlink. Previous + versions had some instances of the event converted, but others were left + as-is. All Unlink events should now be converted to Bridge events. The AMI + protocol version number was incremented to 1.2 as a result of this change. + +Asterisk HTTP Server +-------------------------- + * The HTTP Server can bind to IPv6 addresses. + +chan_dahdi +-------------------------- + * Busy tone patterns featuring 2 silence and 2 tone lengths can now be used + with busydetect. usage example: busypattern=200,200,200,600 + +CLI Changes +-------------------------- + * New 'gtalk show settings' command showing the current settings loaded from + gtalk.conf. + * The 'logger reload' command now supports an optional argument, specifying an + alternate configuration file to use. + * 'dialplan add extension' command will now automatically create a context if + the specified context does not exist with a message indicated it did so. + * 'sip show peers', 'iax show peers', and 'dahdi show peers' now contains a + Description field which can be populated with 'description' in the channel + configuration files (sip.conf, iax2.conf, and chan_dahdi.conf). + +CDR +-------------------------- + * The filter option in cdr_adaptive_odbc now supports negating the argument, + thus allowing records which do NOT match the specified filter. + * Added ability to log CONGESTION calls to CDR + +CODECS +-------------------------- + * Ability to define custom SILK formats in codecs.conf. + * Addition of speex32 audio format with translation. + * CELT codec pass-through support and ability to define + custom CELT formats in codecs.conf. + * Ability to read raw signed linear files with sample rates + ranging from 8khz - 192khz. The new file extensions introduced + are .sln12, .sln24, .sln32, .sln44, .sln48, .sln96, .sln192. + * Due to protocol limitations, channel drivers other than SIP (eg. IAX2, MGCP, + Skinny, H.323, etc) can still only support the following codecs: + Audio: ulaw, alaw, slin, slin16, g719, g722, g723, g726, g726aal2, g729, gsm, + siren7, siren14, speex, speex16, ilbc, lpc10, adpcm + Video: h261, h263, h263p, h264, mpeg4 + Image: jpeg, png + Text: red, t140 + +ConfBridge +-------------------------- + * New highly optimized and customizable ConfBridge application capable of + mixing audio at sample rates ranging from 8khz-96khz. + * CONFBRIDGE dialplan function capable of creating dynamic ConfBridge user + and bridge profiles on a channel. + * CONFBRIDGE_INFO dialplan function capable of retrieving information + about a conference such as locked status and number of parties, admins, + and marked users. + * Addition of video_mode option in confbridge.conf for adding video support + into a bridge profile. + * Addition of the follow_talker video_mode in confbridge.conf. This video + mode dynamically switches the video feed to always display the loudest talker + supplying video in the conference. + +Dialplan Variables +------------------ + * Added ASTETCDIR, ASTMODDIR, ASTVARLIBDIR, ASTDBDIR, ASTKEYDIR, ASTDATADIR, + ASTAGIDIR, ASTSPOOLDIR, ASTRUNDIR, ASTLOGDIR which hold the equivalent + variables from asterisk.conf. + +Dialplan Functions +------------------ + * Addition of the JITTERBUFFER dialplan function. This function allows + for jitterbuffering to occur on the read side of a channel. By using + this function conference applications such as ConfBridge and MeetMe can + have the rx streams jitterbuffered before conference mixing occurs. + * Added DB_KEYS, which lists the next set of keys in the Asterisk database + hierarchy. + * Added STRREPLACE function. This function let's the user search a variable + for a given string to replace with another string as many times as the + user specifies or just throughout the whole string. + * Added option to CHANNEL(pickupgroup) allow reading and setting the pickupgroup of channel. + * Mark VALID_EXTEN() deprecated in favor of DIALPLAN_EXISTS() + * Added extensions to chan_ooh323 in function CHANNEL() + +libpri channel driver (chan_dahdi) DAHDI changes +-------------------------- + * Added moh_signaling option to specify what to do when the channel's bridged + peer puts the ISDN channel on hold. + * Added display_send and display_receive options to control how the display ie + is handled. To send display text from the dialplan use the SendText() + application when the option is enabled. + * Added mcid_send option to allow sending a MCID request on a span. + +Calendaring +-------------------------- + * Added setvar option to calendar.conf to allow setting channel variables on + notification channels. + * Added "calendar show types" CLI command to list registered calendar + connectors. + +MixMonitor +-------------------------- + * Added two new options, r and t with file name arguments to record + single direction (unmixed) audio recording separate from the bidirectional + (mixed) recording. The mixed file name argument is optional now as long + as at least one recording option is used. + +FollowMe +-------------------------- + * Added a new option, l, which will disable local call optimization for + channels involved with the FollowMe thread. Use this option to improve + compatability for a FollowMe call with certain dialplan apps, options, and + functions. + +Meetme +-------------------------- + * Added option "k" that will automatically close the conference when there's + only one person left when a user exits the conference. + +CEL +-------------------------- + * cel_pgsql now supports the 'extra' column for data added using the + CELGenUserEvent() application. + +pbx_lua +-------------------------- + * Support for defining hints has been added to pbx_lua. See the 'hints' table + in the sample extensions.lua file for syntax details. + * Applications that perform jumps in the dialplan such as Goto will now + execute properly. When pbx_lua detects that the context, extension, or + priority we are executing on has changed it will immediately return control + to the asterisk PBX engine. Currently the engine cannot detect a Goto to + the priority after the currently executing priority. + * An autoservice is now started by default for pbx_lua channels. It can be + stopped and restarted using the autoservice_stop() and autoservice_start() + functions. + +res_fax +-------------------------- + * The ReceiveFAXStatus and SendFAXStatus manager events have been consolidated + into a FAXStatus event with an 'Operation' header that will be either + 'send', 'receive', and 'gateway'. + * T.38 gateway functionality has been added to res_fax (and res_fax_spandsp). + Set FAXOPT(gateway)=yes to enable this functionality on a channel. This + feature will handle converting a fax call between an audio T.30 fax terminal + and an IFP T.38 fax terminal. + +SIP Changes +----------- + * Add T38 support for REJECTED state where T.38 Negotiation is explicitly rejected. + * Add option encryption_taglen to set auth taglen only 32 and 80 are supported currently. + * SIP now generates security events using the Security Events Framework for REGISTER and INVITE. + +Queue changes +------------- + * Added general option negative_penalty_invalid default off. when set + members are seen as invalid/logged out when there penalty is negative. + for realtime members when set remove from queue will set penalty to -1. + * Added queue option autopausedelay when autopause is enabled it will be + delayed for this number of seconds since last successful call if there + was no prior call the agent will be autopaused immediately. + * Added member option ignorebusy this when set and ringinuse is not + will allow per member control of multiple calls as ringinuse does for + the Queue. + +Applications +------------ + * Added 'v' option to MeetMe to play voicemail greetings when a user joins/leaves + a MeetMe conference + * Added 'k' option to MeetMe to automatically kill the conference when there's only + one participant left (much like a normal call bridge) + * Added extra argument to Originate to set timeout. + +Asterisk Database +----------------- + * The internal Asterisk database has been switched from Berkeley DB 1.86 to + SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3 + utility in the UTILS section of menuselect. If an existing astdb is found and no + astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will + convert an existing astdb to the SQLite3 version automatically at runtime. + +Asterisk Modules +---------------- + * Modules marked as deprecated are no longer marked as building by default. Enabling + these modules is still available via menuselect. + +IAX2 Changes +------------ + * authdebug is now disabled by default. To enable this functionaility again + set authdebug = yes in iax.conf. + +RTP Changes +----------- + * The rtp.conf setting "strictrtp" is now enabled by default. In previous + releases it was disabled. + +PBX Core +-------- + * The PBX core previously made a call with a non-existing extension test for + extension s@default and jump there if the extension existed. + This was a bad default behaviour and violated the principle of least surprise. + It has therefore been changed in this release. It may affect some + applications and configurations that rely on this behaviour. Most channel + drivers have avoided this for many releases by testing whether the extension + called exists before starting the PBX and generating a local error. + This behaviour still exists and works as before. + + Extension "s" is used when no extension is given in a channel driver, + like immediate answer in DAHDI or calling to a domain with no user part + in a SIP uri. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ---------------- +------------------------------------------------------------------------------ + +SIP Changes +----------- + * Due to potential username discovery vulnerabilities, the 'nat' setting in sip.conf + now defaults to force_rport. It is very important that phones requiring nat=no be + specifically set as such instead of relying on the default setting. If at all + possible, all devices should have nat settings configured in the general section as + opposed to configuring nat per-device. + * Added preferred_codec_only option in sip.conf. This feature limits the joint + codecs sent in response to an INVITE to the single most preferred codec. + * Added SIP_CODEC_OUTBOUND dialplan variable which can be used to set the codec + to be used for the outgoing call. It must be one of the codecs configured + for the device. + * Added tlsprivatekey option to sip.conf. This allows a separate .pem file + to be used for holding a private key. If tlsprivatekey is not specified, + tlscertfile is searched for both public and private key. + * Added tlsclientmethod option to sip.conf. This allows the protocol for + outbound client connections to be specified. + * The sendrpid parameter has been expanded to include the options + 'rpid' and 'pai'. Setting sendrpid to 'rpid' will cause Remote-Party-ID + header to be sent (equivalent to setting sendrpid=yes) and setting + sendrpid to 'pai' will cause P-Asserted-Identity header to be sent. + * The 'ignoresdpversion' behavior has been made automatic when the SDP received + is in response to a T.38 re-INVITE that Asterisk initiated. In this situation, + since the call will fail if Asterisk does not process the incoming SDP, Asterisk + will accept the SDP even if the SDP version number is not properly incremented, + but will generate a warning in the log indicating that the SIP peer that sent + the SDP should have the 'ignoresdpversion' option set. + * The 'nat' option has now been been changed to have yes, no, force_rport, and + comedia as valid values. Setting it to yes forces RFC 3581 behavior and enables + symmetric RTP support. Setting it to no only enables RFC 3581 behavior if the + remote side requests it and disables symmetric RTP support. Setting it to + force_rport forces RFC 3581 behavior and disables symmetric RTP support. + Setting it to comedia enables RFC 3581 behavior if the remote side requests it + and enables symmetric RTP support. + * Slave SIP channels now set HASH(SIP_CAUSE,) on each + response. This permits the master channel to know how each channel dialled + in a multi-channel setup resolved in an individual way. This carries a + performance penalty and can be disabled in sip.conf using the + 'storesipcause' option. + * Added 'externtcpport' and 'externtlsport' options to allow custom port + configuration for the externip and externhost options when tcp or tls is used. + * Added support for message body (stored in content variable) to SIP NOTIFY message + accessible via AMI and CLI. + * Added 'media_address' configuration option which can be used to explicitly specify + the IP address to use in the SDP for media (audio, video, and text) streams. + * Added 'unsolicited_mailbox' configuration option which specifies the virtual mailbox + that the new/old count should be stored on if an unsolicited MWI NOTIFY message is + received. + * Added 'use_q850_reason' configuration option for generating and parsing + if available Reason: Q.850;cause= header. It is implemented + in some gateways for better passing PRI/SS7 cause codes via SIP. + * When dialing SIP peers, a new component may be added to the end of the dialstring + to indicate that a specific remote IP address or host should be used when dialing + the particular peer. The dialstring format is SIP/peer/exten/host_or_IP. + * SRTP SDES support for encrypting calls to/from Asterisk over SIP. The + ability to selectively force bridged channels to also be encrypted is also + implemented. Branching in the dialplan can be done based on whether or not + a channel has secure media and/or signaling. + * Added directmediapermit/directmediadeny to limit which peers can send direct media + to each other + * Added the 'snom_aoc_enabled' option to turn on support for sending Advice of + Charge messages to snom phones. + * Added support for G.719 media streams. + * Added support for 16khz signed linear media streams. + * SIP is now able to bind to and communicate with IPv6 addresses. In addition, + RTP has been outfitted with the same abilities. + * Added support for setting the Max-Forwards: header in SIP requests. Setting is + available in device configurations as well as in the dial plan. + * Addition of the 'subscribe_network_change' option for turning on and off + res_stun_monitor module support in chan_sip. + * Addition of the 'auth_options_requests' option for turning on and off + authentication for OPTIONS requests in chan_sip. + +Configuration files +------------------- + * Add #tryinclude statement for config files. This provides the same + functionality as the #include statement however an asterisk module will + still load if the filename does not exist. Using the #include statement + Asterisk will not allow the module to load. + +IAX2 Changes +----------- + * Added rtsavesysname option into iax.conf to allow the systname to be saved + on realtime updates. + * Added the ability for chan_iax2 to inform the dialplan whether or not + encryption is being used. This interoperates with the SIP SRTP implementation + so that a secure SIP call can be bridged to a secure IAX call when the + dialplan requires bridged channels to be "secure". + * Addition of the 'subscribe_network_change' option for turning on and off + res_stun_monitor module support in chan_iax. + + +MGCP Changes +------------ + * Added ability to preset channel variables on indicated lines with the setvar + configuration option. Also, clearvars=all resets the list of variables back + to none. + * PacketCable NCS 1.0 support has been added for Docsis/Eurodocsis Networks. + See configs/res_pktccops.conf for more information. + +XMPP Google Talk/Jingle changes +------------------------------- + * Added the externip option to gtalk.conf. + * Added the stunaddr option to gtalk.conf which allows for the automatic + retrieval of the external ip from a stun server. + +Applications +------------ + * Added 'p' option to PickupChan() to allow for picking up channel by the first + match to a partial channel name. + * Added .m3u support for Mp3Player application. + * Added progress option to the app_dial D() option. When progress DTMF is + present, those values are sent immediately upon receiving a PROGRESS message + regardless if the call has been answered or not. + * Added functionality to the app_dial F() option to continue with execution + at the current location when no parameters are provided. + * Added the 'a' option to app_dial to answer the calling channel before any + announcements or macros are executed. + * Modified app_dial to set answertime when the called channel answers even if + the called channel hangs up during playback of an announcement. + * Modified app_dial 'r' option to support an additional parameter to play an + indication tone from indications.conf + * Added c() option to app_chanspy. This option allows custom DTMF to be set + to cycle through the next available channel. By default this is still '*'. + * Added x() option to app_chanspy. This option allows DTMF to be set to + exit the application. + * The Voicemail application has been improved to automatically ignore messages + that only contain silence. + * If you set maxmsg to 0 in voicemail.conf, Voicemail will consider the + associated mailbox(es) to be greetings-only. + * The ChanSpy application now has the 'S' option, which makes the application + automatically exit once it hits a point where no more channels are available + to spy on. + * The ChanSpy application also now has the 'E' option, which spies on a single + channel and exits when that channel hangs up. + * The MeetMe application now turns on the DENOISE() function by default, for + each participant. In our tests, this has significantly decreased background + noise (especially noisy data centers). + * Voicemail now permits storage of secrets in a separate file, located in the + spool directory of each individual user. The control for this is located in + the "passwordlocation" option in voicemail.conf. Please see the sample + configuration for more information. + * The ChanIsAvail application now exposes the returned cause code using a separate + variable, AVAILCAUSECODE, instead of overwriting the device state in AVAILSTATUS. + * Added 'd' option to app_followme. This option disables the "Please hold" + announcement. + * Added 'y' option to app_record. This option enables a mode where any DTMF digit + received will terminate recording. + * Voicemail now supports per mailbox settings for folders when using IMAP storage. + Previously the folder could only be set per context, but has now been extended + using the imapfolder option. + * Voicemail now supports per mailbox settings for nextaftercmd and minsecs. + * Voicemail now allows the pager date format to be specified separately from the + email date format. + * New applications JabberJoin, JabberLeave, and JabberSendGroup have been added + to allow joining, leaving, and sending text to group chats. + * MeetMe has a new option 'G' to play an announcement before joining a conference. + * Page has a new option 'A(x)' which will playback an announcement simultaneously + to all paged phones (and optionally excluding the caller's one using the new + option 'n') before the call is bridged. + * The 'f' option to Dial has been augmented to take an optional argument. If no + argument is provided, the 'f' option works as it always has. If an argument is + provided, then the connected party information of all outgoing channels created + during the Dial will be set to the argument passed to the 'f' option. + * Dial now inherits the GOSUB_RETVAL from the peer, when the U() option runs a + Gosub on the peer. + * The OSP lookup application adds in/outbound network ID, optional security, + number portability, QoS reporting, destination IP port, custom info and service + type features. + * Added new application VMSayName that will play the recorded name of the voicemail + user if it exists, otherwise will play the mailbox number. + * Added custom device states to ConfBridge bridges. Use 'confbridge:' to + retrieve state for a particular bridge, where is the conference name + * app_directory now allows exiting at any time using the operator or pound key. + * Voicemail now supports setting a locale per-mailbox. + * Two new applications are provided for declining counting phrases in multiple + languages. See the application notes for SayCountedNoun and SayCountedAdj for + more information. + * Voicemail now runs the externnotify script when pollmailboxes is activated and + notices a change. + * Voicemail now includes rdnis within msgXXXX.txt file. + * ExternalIVR now supports IPv6 addresses. + * Added 'D' command to ExternalIVR. Details are available on the Asterisk wiki + at https://wiki.asterisk.org/wiki/x/oQBB + * ParkedCall and Park can now specify the parking lot to use. + +Dialplan Functions +------------------ + * SRVQUERY and SRVRESULT functions added. This can be used to query and iterate + over SRV records associated with a specific service. From the CLI, type + 'core show function SRVQUERY' and 'core show function SRVRESULT' for more + details on how these may be used. + * PITCH_SHIFT dialplan function added. This function can be used to modify the + pitch of a channel's tx and rx audio streams. + * Added new dialplan functions CONNECTEDLINE and REDIRECTING which permits + setting various connected line and redirecting party information. + * CALLERID and CONNECTEDLINE dialplan functions have been extended to + support ISDN subaddressing. + * The CHANNEL() function now supports the "name" and "checkhangup" options. + * For DAHDI channels, the CHANNEL() dialplan function now allows + the dialplan to request changes in the configuration of the active + echo canceller on the channel (if any), for the current call only. + The syntax is: + + exten => s,n,Set(CHANNEL(echocan_mode)=off) + + The possible values are: + + on - normal mode (the echo canceller is actually reinitialized) + off - disabled + fax - FAX/data mode (NLP disabled if possible, otherwise completely + disabled) + voice - voice mode (returns from FAX mode, reverting the changes that + were made when FAX mode was requested) + * Added new dialplan function MASTER_CHANNEL(), which permits retrieving + and setting variables on the channel which created the current channel. + Administrators should take care to avoid naming conflicts, when multiple + channels are dialled at once, especially when used with the Local channel + construct (which all could set variables on the master channel). Usage + of the HASH() dialplan function, with the key set to the name of the slave + channel, is one approach that will avoid conflicts. + * Added new dialplan function MUTEAUDIO() for muting inbound and/or outbound + audio in a channel. + * func_odbc now allows multiple row results to be retrieved without using + mode=multirow. If rowlimit is set, then additional rows may be retrieved + from the same query by using the name of the function which retrieved the + first row as an argument to ODBC_FETCH(). + * Added JABBER_RECEIVE, which permits receiving XMPP messages from the + dialplan. This function returns the content of the received message. + * Added REPLACE, which searches a given variable name for a set of characters, + then either replaces them with a single character or deletes them. + * Added PASSTHRU, which literally passes the same argument back as its return + value. The intent is to be able to use a literal string argument to + functions that currently require a variable name as an argument. + * HASH-associated variables now can be inherited across channel creation, by + prefixing the name of the hash at assignment with the appropriate number of + underscores, just like variables. + * GROUP_MATCH_COUNT has been improved to allow regex matching on category + * CHANNEL(secure_bridge_signaling) and CHANNEL(secure_bridge_media) to set/get + whether or not channels that are bridged to the current channel will be + required to have secure signaling and/or media. + * CHANNEL(secure_signaling) and CHANNEL(secure_media) to get whether or not + the current channel has secure signaling and/or media. + * For DAHDI/ISDN channels, the CHANNEL() dialplan function now supports the + "no_media_path" option. + Returns "0" if there is a B channel associated with the call. + Returns "1" if no B channel is associated with the call. The call is either + on hold or is a call waiting call. + * Added option to dialplan function CDR(), the 'f' option + allows for high resolution times for billsec and duration fields. + * FILE() now supports line-mode and writing. + * Added FIELDNUM(), which returns the 1-based offset of a field in a list. + * FRAME_TRACE(), for tracking internal ast_frames on a channel. + +Dialplan Variables +------------------ + * Added DYNAMIC_FEATURENAME which holds the last triggered dynamic feature. + * Added DYNAMIC_PEERNAME which holds the unique channel name on the other side + and is set when a dynamic feature is triggered. + * Added PARKINGLOT which can be used with parkeddynamic feature.conf option + to dynamically create a new parking lot matching the value this varible is + set to. + * Added PARKINGDYNAMIC which represents the template parkinglot defined in + features.conf that should be the base for dynamic parkinglots. + * Added PARKINGDYNCONTEXT which tells what context a newly created dynamic + parkinglot should have. + * Added PARKINGDYNEXTEN which tells what parking exten a newly created dynamic + parkinglot should have. + * Added PARKINGDYNPOS which holds what parking positions a dynamic parkinglot + should have. + +Queue changes +------------- + * Added "ready" option to QUEUE_MEMBER counting to count free agents whose wrap-up + timeout has expired. + * Added 'R' option to app_queue. This option stops moh and indicates ringing + to the caller when an Agent's phone is ringing. This can be used to indicate + to the caller that their call is about to be picked up, which is nice when + one has been on hold for an extened period of time. + * A new config option, penaltymemberslimit, has been added to queues.conf. + When set this option will disregard penalty settings when a queue has too + few members. + * A new option, 'I' has been added to both app_queue and app_dial. + By setting this option, Asterisk will not update the caller with + connected line changes or redirecting party changes when they occur. + * A 'relative-periodic-announce' option has been added to queues.conf. When + enabled, this option will cause periodic announce times to be calculated + from the end of announcements rather than from the beginning. + * The autopause option in queues.conf can be passed a new value, "all." The + result is that if a member becomes auto-paused, he will be paused in all + queues for which he is a member, not just the queue that failed to reach + the member. + * Added dialplan function QUEUE_EXISTS to check if a queue exists + * The queue logger now allows events to optionally propagate to a file, + even when realtime logging is turned on. Additionally, realtime logging + supports sending the event arguments to 5 individual fields, although it + will fallback to the previous data definition, if the new table layout is + not found. + +mISDN channel driver (chan_misdn) changes +---------------------------------------- + * Added display_connected parameter to misdn.conf to put a display string + in the CONNECT message containing the connected name and/or number if + the presentation setting permits it. + * Added display_setup parameter to misdn.conf to put a display string + in the SETUP message containing the caller name and/or number if the + presentation setting permits it. + * Made misdn.conf parameters localdialplan and cpndialplan take a -1 to + indicate the dialplan settings are to be obtained from the asterisk + channel. + * Made misdn.conf parameter callerid accept the "name" format + used by the rest of the system. + * Made use the nationalprefix and internationalprefix misdn.conf + parameters to prefix any received number from the ISDN link if that + number has the corresponding Type-Of-Number. NOTE: This includes + comparing the incoming call's dialed number against the MSN list. + * Added the following new parameters: unknownprefix, netspecificprefix, + subscriberprefix, and abbreviatedprefix in misdn.conf to prefix any + received number from the ISDN link if that number has the corresponding + Type-Of-Number. + * Added new dialplan application misdn_command which permits controlling + the CCBS/CCNR functionality. + * Added new dialplan function mISDN_CC which permits retrieval of various + values from an active call completion record. + * For PTP, you should manually send the COLR of the redirected-to party + for an incomming redirected call if the incoming call could experience + further redirects. Just set the REDIRECTING(to-num,i) = ${EXTEN} and + set the REDIRECTING(to-pres) to the COLR. A call has been redirected + if the REDIRECTING(from-num) is not empty. + * For outgoing PTP redirected calls, you now need to use the inhibit(i) + option on all of the REDIRECTING statements before dialing the + redirected-to party. You still have to set the REDIRECTING(to-xxx,i) + and the REDIRECTING(from-xxx,i) values. The PTP call will update the + redirecting-to presentation (COLR) when it becomes available. + * Added outgoing_colp parameter to misdn.conf to filter outgoing COLP + information. + +thirdparty mISDN enhancements +----------------------------- +mISDN has been modified by Digium, Inc. to greatly expand facility message +support to allow: + * Enhanced COLP support for call diversion and transfer. + * CCBS/CCNR support. + +The latest modified mISDN v1.1.x based version is available at: +http://svn.digium.com/svn/thirdparty/mISDN/trunk +http://svn.digium.com/svn/thirdparty/mISDNuser/trunk + +Tagged versions of the modified mISDN code are available under: +http://svn.digium.com/svn/thirdparty/mISDN/tags +http://svn.digium.com/svn/thirdparty/mISDNuser/tags + +libpri channel driver (chan_dahdi) DAHDI changes +------------------------------------------- + * The channel variable PRIREDIRECTREASON is now just a status variable + and it is also deprecated. Use the REDIRECTING(reason) dialplan function + to read and alter the reason. + * For Q.SIG and ETSI PRI/BRI-PTP, you should manually send the COLR of the + redirected-to party for an incomming redirected call if the incoming call + could experience further redirects. Just set the + REDIRECTING(to-num,i) = CALLERID(dnid) and set the REDIRECTING(to-pres) + to the COLR. A call has been redirected if the REDIRECTING(count) is not + zero. + * For outgoing Q.SIG and ETSI PRI/BRI-PTP redirected calls, you need to + use the inhibit(i) option on all of the REDIRECTING statements before + dialing the redirected-to party. You still have to set the + REDIRECTING(to-xxx,i) and the REDIRECTING(from-xxx,i) values. The call + will update the redirecting-to presentation (COLR) when it becomes available. + * Added the ability to ignore calls that are not in a Multiple Subscriber + Number (MSN) list for PTMP CPE interfaces. + * Added dynamic range compression support for dahdi channels. It is + configured via the rxdrc and txdrc parameters in chan_dahdi.conf. + * Added support for ISDN calling and called subaddress with partial support + for connected line subaddress. + * Added support for BRI PTMP NT mode. (Requires latest LibPRI.) + * Added handling of received HOLD/RETRIEVE messages and the optional ability + to transfer a held call on disconnect similar to an analog phone. + * Added CallRerouting/CallDeflection support for Q.SIG, ETSI PTP, ETSI PTMP. + Will reroute/deflect an outgoing call when receive the message. + Can use the DAHDISendCallreroutingFacility to send the message for the + supported switches. + * Added standard location to add options to chan_dahdi dialing: + Dial(DAHDI/g1[/extension[/options]]) + Current options: + K() + R Reverse charging indication + * Added Reverse Charging Indication (Collect calls) send/receive option. + Send reverse charging in SETUP message with the chan_dahdi R dialing option. + Dial(DAHDI/g1/extension/R) + Access received reverse charge in SETUP message by: ${CHANNEL(reversecharge)} + (requires latest LibPRI) + * Added ability to send/receive keypad digits in the SETUP message. + Send keypad digits in SETUP message with the chan_dahdi K() + dialing option. Dial(DAHDI/g1/[extension]/K()) + Access any received keypad digits in SETUP message by: ${CHANNEL(keypad_digits)} + (requires latest LibPRI) + * Added ability to send and receive ETSI Explicit Call Transfer (ECT) messages + to eliminate tromboned calls. A tromboned call goes out an interface and comes + back into the same interface. Tromboned calls happen because of call routing, + call deflection, call forwarding, and call transfer. + * Added the ability to send and receive ETSI Advice-Of-Charge messages. + * Added the ability to support call waiting calls. (The SETUP has no B channel + assigned.) + * Added Malicious Call ID (MCID) event to the AMI call event class. + * Added Message Waiting Indication (MWI) support for ISDN PTMP endpoints (phones). + +Asterisk Manager Interface +-------------------------- + * The Hangup action now accepts a Cause header which may be used to + set the channel's hangup cause. + * sslprivatekey option added to manager.conf and http.conf. Adds the ability + to specify a separate .pem file to hold a private key. By default sslcert + is used to hold both the public and private key. + * Options in manager.conf and http.conf with the 'ssl' prefix have been replaced + for options containing the 'tls' prefix. For example, 'sslenable' is now + 'tlsenable'. This has been done in effort to keep ssl and tls options consistent + across all .conf files. All affected sample.conf files have been modified to + reflect this change. Previous options such as 'sslenable' still work, + but options with the 'tls' prefix are preferred. + * Added a MuteAudio AMI action for muting inbound and/or outbound audio + in a channel. (res_mutestream.so) + * The configuration file manager.conf now supports a channelvars option, which + specifies a list of channel variables to include in each channel-oriented + event. + * The redirect command now has new parameters ExtraContext, ExtraExtension, + and ExtraPriority to allow redirecting the second channel to a different + location than the first. + * Added new event "JabberStatus" in the Jabber module to monitor buddies + status. + * Added a "MixMonitorMute" AMI action for muting inbound and/or outbound audio + in a MixMonitor recording. + * The 'iax2 show peers' output is now similar to the expected output of + 'sip show peers'. + * Added Advice-Of-Charge events (AOC-S, AOC-D, and AOC-E) in the new + aoc event class. + * Added Advice-Of-Charge manager action, AOCMessage, for generating AOC-D and + AOC-E messages on a channel. + * A DBGetComplete event now follows a DBGetResponse, to make the DBGet action + conform more closely to similar events. + * Added a new eventfilter option per user to allow whitelisting and blacklisting + of events. + * Added optional parkinglot variable for park command. + * Added ConnectedLineNum and ConnectedLineName headers to AMI events/responses + if CallerIDNum and CallerIDName headers are also present. + +Channel Event Logging +--------------------- + * A new interface, CEL, is introduced here. CEL logs single events, much like + the AMI, but it differs from the AMI in that it logs to db backends much + like CDR does; is based on the event subsystem introduced by Russell, and + can share in all its benefits; allows multiple backends to operate like CDR; + is specialized to event data that would be of concern to billing sytems, + like CDR. Backends for logging and accounting calls have been produced, + but a new CDR backend is still in development. + +CDR +--- + * 'linkedid' and 'peeraccount' are new CDR fields available to CDR aficionados. + linkedid is based on uniqueID, but spreads to other channels as transfers, dials, + etc are performed. Thus the pieces of CDR can be grouped into multilegged sets. + * Multiple files and formats can now be specified in cdr_custom.conf. + * cdr_syslog has been added which allows CDRs to be written directly to syslog. + See configs/cdr_syslog.conf.sample for more information. + * A 'sequence' field has been added to CDRs which can be combined with + linkedid or uniqueid to uniquely identify a CDR. + * Handling of billsec and duration field has changed. If your table definition + specifies those fields as float,double or similar they will now be logged with + microsecond accuracy instead of a whole integer. + +Calendaring for Asterisk +------------------------ + * A new set of modules were added supporing calendar integration with Asterisk. + Dialplan functions for reading from and writing to calendars are included, + as well as the ability to execute dialplan logic upon calendar event notifications. + iCalendar, CalDAV, and Exchange Server calendars (via res_calendar_exchange for + Exchange Server 2003 with no write or attendee support, and res_calendar_ews for + Exchange Server 2007+ with full write and attendee support) are supported (Exchange + 2003 support does not support forms-based authentication). + +Call Completion Supplementary Services for Asterisk +--------------------------------------------------- + * Call completion support has been added for SIP, DAHDI/ISDN, and DAHDI/analog. + DAHDI/ISDN supports call completion for the following switch types: + EuroIsdn(ETSI) for PTP and PTMP modes, and Qsig. + See https://wiki.asterisk.org/wiki/x/2ABQ for details. + +Multicast RTP Support +--------------------- + * A new RTP engine and channel driver have been added which supports Multicast RTP. + The channel driver can be used with the Page application to perform multicast RTP + paging. The dial string format is: MulticastRTP/// + Type can be either basic or linksys. + Destination is the IP address and port for the RTP packets. + Control address is specific to the linksys type and is used for sending the control + packets unique to them. + +Security Events Framework +------------------------- + * Asterisk has a new C API for reporting security events. The module res_security_log + sends these events to the "security" logger level. Currently, AMI is the only + Asterisk component that reports security events. However, SIP support will be + coming soon. For more information on the security events framework, see the + "Asterisk Security Framework" section of the Asterisk wiki at + https://wiki.asterisk.org/wiki/x/wgBQ + * SIP support was added in Asterisk 10 + * This API now supports IPv6 addresses + +Fax +--- + * A technology independent fax frontend (res_fax) has been added to Asterisk. + * A spandsp based fax backend (res_fax_spandsp) has been added. + * The app_fax module has been deprecated in favor of the res_fax module and + the new res_fax_spandsp backend. + * The SendFAX and ReceiveFAX applications now send their log messages to a + 'fax' logger level, instead of to the generic logger levels. To see these + messages, the system's logger.conf file will need to direct the 'fax' logger + level to one or more destinations; the logger.conf.sample file includes an + example of how to do this. Note that if the 'fax' logger level is *not* + directed to at least one destination, log messages generated by these + applications will be lost, and that if the 'fax' logger level is directed to + the console, the 'core set verbose' and 'core set debug' CLI commands will + have no effect on whether the messages appear on the console or not. + +Miscellaneous +------------- + * The transmit_silence_during_record option in asterisk.conf.sample has been removed. + Now, in order to enable transmitting silence during record the transmit_silence + option should be used. transmit_silence_during_record remains a valid option, but + defaults to the behavior of the transmit_silence option. + * Addition of the Unit Test Framework API for managing registration and execution + of unit tests with the purpose of verifying the operation of C functions. + * SendText is now implemented in chan_gtalk and chan_jingle. It will simply send + XMPP text messages to the remote JID. + * Modules.conf has a new option - "require" - that marks a module as critical for + the execution of Asterisk. + If one of the required modules fail to load, Asterisk will exit with a return + code set to 2. + * An 'X' option has been added to the asterisk application which enables #exec support. + This allows #exec to be used in asterisk.conf. + * jabber.conf supports a new option auth_policy that toggles auto user registration. + * A new lockconfdir option has been added to asterisk.conf to protect the + configuration directory (/etc/asterisk by default) during reloads. + * The parkeddynamic option has been added to features.conf to enable the creation + of dynamic parkinglots. + * chan_dahdi now supports reporting alarms over AMI either by channel or span via + the reportalarms config option. + * chan_dahdi supports dialing configuring and dialing by device file name. + DAHDI/span-name!local!1 will use /dev/dahdi/span-name/local/1 . Likewise + it may appear in chan_dahdi.conf as 'channel => span-name!local!1'. + * A new options for chan_dahdi.conf: 'ignore_failed_channels'. Boolean. + False by default. If set, chan_dahdi will ignore failed 'channel' entries. + Handy for the above name-based syntax as it does not depend on + initialization order. + * The Realtime dialplan switch now caches entries for 1 second. This provides a + significant increase in performance (about 3X) for installations using this switchtype. + * Distributed devicestate now supports the use of the XMPP protocol, in addition to + AIS. For more information, please see the Distributed Device State section of the + Asterisk wiki at https://wiki.asterisk.org/wiki/x/jw4iAQ + * The addition of G.719 pass-through support. + * Added support for 16khz Speex audio. This can be enabled by using 'allow=speex16' + during device configuration. + * The UNISTIM channel driver (chan_unistim) has been updated to support devices that + have less than 3 lines on the LCD. + * Realtime now supports database failover. See the sample extconfig.conf for details. + * The addition of improved translation path building for wideband codecs. Sample + rate changes during translation are now avoided unless absolutely necessary. + * The addition of the res_stun_monitor module for monitoring and reacting to network + changes while behind a NAT. + * DTMF: Normal and Reverse Twist acceptance values can be set in dsp.conf. + DTMF Valid/Invalid number of hits/misses can be set in dsp.conf. + These allow support for any Administration. Default is AT&T values. + +CLI Changes +----------- + * The 'core set debug' and 'core set verbose' commands, in previous versions, could + optionally accept a filename, to apply the setting only to the code generated from + that source file when Asterisk was built. However, there are some modules in Asterisk + that are composed of multiple source files, so this did not result in the behavior + that users expected. In this version, 'core set debug' and 'core set verbose' + can optionally accept *module* names instead (with or without the .so extension), + which applies the setting to the entire module specified, regardless of which source + files it was built from. + * New 'manager show settings' command showing the current settings loaded from + manager.conf. + * Added 'all' keyword to the CLI command "channel request hangup" so that you can send + the channel hangup request to all channels. + * Added a "core reload" CLI command that executes a global reload of Asterisk. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 1.6.1 to Asterisk 1.6.2 ------------- +------------------------------------------------------------------------------ + +SIP Changes +----------- + * Added support for SUBSCRIBE/NOTIFY with dialog-info based call pickups. + Snom phones use this for call pickup of extensions that the phone is + subscribed to. + * Added support for setting the domain in the URI for caller of an + outbound call by using the SIPFROMDOMAIN channel variable. + * Added a new configuration option "remotesecret" for authentication to + remote services. For backwards compatibility, "secret" still has the + same function as before, but now you can configure both a remote secret and a + local secret for mutual authentication. + * If the channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is set, + the sound will be played to the target of an attended transfer + * Added two new configuration options, "qualifygap" and "qualifypeers", which allow + finer control over how many peers Asterisk will qualify and the gap between them + when all peers need to be qualified at the same time. + * Added a new 'ignoresdpversion' option to sip.conf. When this is enabled + (either globally or for a specific peer), chan_sip will treat any SDP data + it receives as new data and update the media stream accordingly. By + default, Asterisk will only modify the media stream if the SDP session + version received is different from the current SDP session version. This + option is required to interoperate with devices that have non-standard SDP + session version implementations (observed with Microsoft OCS). This option + is disabled by default. + * The parsing of register => lines in sip.conf has been modified to allow a port + to be present in the "user" portion. Please see the sip.conf.sample file for more + information + * Added support for subscribing to MWI on a remote server and making the status available + as a mailbox. Please see the sip.conf.sample file for more information. + * Added a function to remove SIP headers added in the dialplan before the + first INVITE is generated - SIPRemoveHeader() + * Channel variables set with setvar= in a device configuration is now + set both for inbound and outbound calls. + * Added support for ITU G.722.1 and G.722.1C (Siren7 and Siren14) media streams. + +IAX2 changes +------------ + * Added immediate option to iax.conf + * Added forceencryption option to iax.conf + * Added Encryption and Trunk status to manager command "iaxpeers" + +Skinny Changes +-------------- + * The configuration file now holds separate sections for devices and lines. + Please have a look at configs/skinny.conf.sample and change your skinny.conf + accordingly. + +DAHDI Changes +------------- + * chan_dahdi now supports MFC/R2 signaling when Asterisk is compiled with + support for LibOpenR2. http://www.libopenr2.org/ + * The UK option waitfordialtone has been added for use with BT analog + lines. + * Added a 'faxbuffers' configuration option to chan_dahdi.conf. This option + is used in conjunction with the 'faxdetect' configuration option. When + 'faxbuffers' is used and fax tones are detected, the channel will dynamically + switch to the configured faxbuffers policy. For example, to use 6 buffers + and a 'full' buffer policy for a fax transmission, add: + faxbuffers=>6,full + The faxbuffers configuration will be in affect until the call is torn down. + * Added service message support for 4ESS/5ESS switches. + +Dialplan Functions +------------------ + * For DAHDI channels, the CHANNEL() dialplan function now + supports changing the channel's buffer policy (for the current + call only), using this syntax: + + exten => s,n,Set(CHANNEL(buffers)=6,full) + + This would change the channel to the 'full' buffer policy and + 6 (six) buffers. Possible options for this setting are the same + as those in chan_dahdi.conf. + * Added a new dialplan function, CURLOPT, which permits setting various + options that may be useful with the CURL dialplan function, such as + cookies, proxies, connection timeouts, passwords, etc. + * Permit the syntax and synopsis fields of the corresponding dialplan + functions to be individually set from func_odbc.conf. + * Added debugging CLI functions to func_odbc, 'odbc read' and 'odbc write'. + * func_odbc now may specify an insert query to execute, when the write query + affects 0 rows (usually indicating that no such row exists). + * Added a new dialplan function, LISTFILTER, which permits removing elements + from a set list, by name. Uses the same general syntax as the existing CUT + and FIELDQTY dialplan functions, which also manage lists. + * Added REALTIME_FIELD and REALTIME_HASH, which should aid users in better + obtaining realtime data from the dialplan. + * Added LOCAL_PEEK, which allows access to variables in any stack frame within + a subroutine when using the GoSub() and Return() applications. + * Added AUDIOHOOK_INHERIT. For information on its use, please see the output + of "core show function AUDIOHOOK_INHERIT" from the CLI + * Added AES_ENCRYPT. For information on its use, please see the output + of "core show function AES_ENCRYPT" from the CLI + * Added AES_DECRYPT. For information on its use, please see the output + of "core show function AES_DECRYPT" from the CLI + * func_odbc now supports database transactions across multiple queries. + +Applications +------------ + * Scheduled meetme conferences may now have their end times extended by + using MeetMeAdmin. + * app_authenticate now gives the ability to select a prompt other than + the default. + * app_directory now pays attention to the searchcontexts setting in + voicemail.conf and will look through all contexts, if no context is + specified in the initial argument. + * A new application, Originate, has been introduced, that allows asynchronous + call origination from the dialplan. + * Voicemail now permits setting the emailsubject and emailbody per mailbox, + in addition to the setting in the "general" context. + * Added ConfBridge dialplan application which does conference bridges without + DAHDI. For information on its use, please see the output of + "core show application ConfBridge" from the CLI. + +Miscellaneous +------------- + * The Asterisk CLI has a new command, "channel redirect", which is similar in + operation to the AMI Redirect action. + * extensions.conf now allows you to use keyword "same" to define an extension + without actually specifying an extension. It uses exactly the same pattern + as previously used on the last "exten" line. For example: + exten => 123,1,NoOp(something) + same => n,SomethingElse() + * musiconhold.conf classes of type 'files' can now use relative directory paths, + which are interpreted as relative to the astvarlibdir setting in asterisk.conf. + * All deprecated CLI commands are removed from the sourcecode. They are now handled + by the new clialiases module. See cli_aliases.conf.sample file. + * Times within timespecs are now accurate down to the minute. This is a change + from historical Asterisk, which only provided timespecs rounded to the nearest + even (read: evenly divisible by 2) minute mark. + * The realtime switch now supports an option flag, 'p', which disables searches for + pattern matches. + * In addition to a time range and date range, timespecs now accept a 5th optional + argument, timezone. This allows you to perform time checks on alternate + timezones, especially if those daylight savings time ranges vary from your + machine's native timezone. See GotoIfTime, ExecIfTime, IFTIME(), and timed + includes. + * The contrib/scripts/ directory now has a script called sip_nat_settings that will + give you the correct output for an asterisk box behind nat. It will give you the + externhost and localnet settings. + * The Asterisk core now supports ITU G.722.1 and G.722.1C media streams, and + can connect calls in passthrough mode, as well as record and play back files. + * Successful and unsuccessful call pickup can now be alerted through sounds, by + using pickupsound and pickupfailsound in features.conf. + * ASTVARRUNDIR is now set to $(localstatedir)/run/asterisk by default. + This means the asterisk pid file will now be in /var/run/asterisk/asterisk.pid on LINUX + instead of the /var/run/asterisk.pid where it used to be. This will make + installs as non-root easier to manage. + +CDR +--- + +* The cdr.conf file must exist and be correctly programmed in order for CDR records to + be written; they will no longer be explicitly written. + +Asterisk Manager Interface +-------------------------- + * When using the AMI over HTTP, you can now include a 'SuppressEvents' header (with + a non-empty value) in your request. If you do this, any pending AMI events will + *not* be included in the response to your request as they would normally, but + will be left in the event queue for the next request you make to retrieve. For + some applications, this will allow you to guarantee that you will only see + events in responses to 'WaitEvent' actions, and can better know when to expect them. + To know whether the Asterisk server supports this header or not, your client can + inspect the first response back from the server to see if it includes this header: + + Pragma: SuppressEvents + + If this is included, the server supports event suppression. + + * Added 4 new Actions to list skinny device(s) and line(s) + SKINNYdevices + SKINNYshowdevice + SKINNYlines + SKINNYshowline + +LDAP Schema File Additions +-------------------------- + * Added AsteriskDialplan, AsteriskAccount and AsteriskMailbox objectClasses + to allow standalone dialplan, account and mailbox entries (STRUCTURAL) + * Added new Fields: + - AstAccountLanguage, AstAccountTransport, AstAccountPromiscRedir, + - AstAccountAccountCode, AstAccountSetVar, AstAccountAllowOverlap, + - AstAccountVideoSupport, AstAccountIgnoreSDPVersion + * Removed redundant IPaddr (there's already IPAddress) + - Gives more configuration Flags for SIP-Users available (tested) + - Allows to create Asterisk Attributes in defined Asterisk ObjectClasses + without extensibleObject (which really should be the last resort); gives + also additional possibilities for LDAP-filter + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 1.6.0 to Asterisk 1.6.1 ------------- +------------------------------------------------------------------------------ + +Device State Handling +--------------------- + * The event infrastructure in Asterisk got another big update to help support + distributed events. It currently supports distributed device state and + distributed Voicemail MWI (Message Waiting Indication). A new module has + been merged, res_ais, which facilitates communicating events between servers. + It uses the SAForum AIS (Service Availability Forum Application Interface + Specification) CLM (Cluster Management) and EVT (Event) services to maintain + a cluster of Asterisk servers, and to share events between them. For more + information on setting this up, refer to the Distributed Device State section + of the Asterisk wiki at https://wiki.asterisk.org/wiki/x/jw4iAQ + +Dialplan Functions +------------------ + * Added a new dialplan function, AST_CONFIG(), which allows you to access + variables from an Asterisk configuration file. + * The JACK_HOOK function now has a c() option to supply a custom client name. + * Added two new dialplan functions from libspeex for audio gain control and + denoise, AGC() and DENOISE(). Both functions can be applied to the tx and + rx directions of a channel from the dialplan. + * The SMDI_MSG_RETRIEVE function now has the ability to search for SMDI messages + based on other parameters. The default is still to search based on the + forwarding station ID. However, there are new options that allow you to search + based on the message desk terminal ID, or the message desk number. + * TIMEOUT() has been modified to be accurate down to the millisecond. + * ENUM*() functions now include the following new options: + - 'u' returns the full URI and does not strip off the URI-scheme. + - 's' triggers ISN specific rewriting + - 'i' looks for branches into an Infrastructure ENUM tree + - 'd' for a direct DNS lookup without any flipping of digits. + * TXCIDNAME() has a new zone-suffix parameter (which defaults to 'e164.arpa') + * CHANNEL() now has options for the maximum, minimum, and standard or normal + deviation of jitter, rtt, and loss for a call using chan_sip. + +DAHDI channel driver (chan_dahdi) Changes +---------------------------------------- + * Channels can now be configured using named sections in chan_dahdi.conf, just + like other channel drivers, including the use of templates. + * The default for pridialplan has changed from 'national' to 'unknown'. + +PBX Changes +----------- + * It is now possible to specify a pattern match as a hint. Once a phone subscribes + to something that matches the pattern a hint will be created using the contents + and variables evaluated. + * Dialplan matching has been extended to allow an extension to return to the + PBX core to wait for more digits. This is done by using the new dialplan + application called "Incomplete". This will permit a whole new level of + extension control, by giving the administrator more control over early + matches employing one of the short-circuit pattern match operators. Note + that custom applications can trigger this same behavior by returning the + special value AST_PBX_INCOMPLETE. + +Application Changes +------------------- + * Directory now permits both first and last names to be matched at the same + time. In addition, the number of digits to enter of the name can be set in + the arguments to Directory; previously, you could enter only 3, regardless + of how many names are in your company. For large companies, this should be + quite helpful. + * Voicemail now permits a mailbox setting to wrap around from first to last + messages, if the "messagewrap" option is set to a true value. + * Voicemail now permits an external script to be run, for password validation. + The script should output "VALID" or "INVALID" on stdout, depending upon the + wish to validate or invalidate the password given. Arguments are: + "mailbox" "context" "oldpass" "newpass". See the sample voicemail.conf for + more details + * Dial has a new option: F(context^extension^pri), which permits a callee to + continue in the dialplan, at the specified label, if the caller hangs up. + * ChanSpy and ExtenSpy have a new option, 's' which suppresses speaking the + technology name (e.g. SIP, IAX, etc) of the channel being spied on. + * The Jack application now has a c() option to supply a custom client name. + * Chanspy has a new option, 'B', which can be used to "barge" on a call. This is + like the pre-existing whisper mode, except that the spy can also talk to the + participant on the bridged channel as well. + * Chanspy has a new option, 'n', which will allow for the spied-on party's name + to be spoken instead of the channel name or number. For more information on the + use of this option, issue the command "core show application ChanSpy" from the + Asterisk CLI. + * Chanspy has a new option, 'd', which allows the spy to use DTMF to swap between + spy modes. Use of this feature overrides the typical use of numeric DTMF. In other + words, if using the 'd' option, it is not possible to enter a number to append to + the first argument to Chanspy(). Pressing 4 will change to spy mode, pressing 5 will + change to whisper mode, and pressing 6 will change to barge mode. + * ExternalIVR now takes several options that affect the way it performs, as + well as having several new commands. Please see the External IVR page on the Asterisk + wiki for complete documentation: https://wiki.asterisk.org/wiki/x/oQBB + * Added ability to communicate over a TCP socket instead of forking a child process for the + ExternalIVR application. + * ChanIsAvail has a new option, 'a', which will return all available channels instead + of just the first one if you give the function more then one channel to check. + * PrivacyManager now takes an option where you can specify a context where the + given number will be matched. This way you have more control over who is allowed + and it stops the people who blindly enter 10 digits. + * ForkCDR has new options: 'a' updates the answer time on the new CDR; 'A' locks + answer times, disposition, on orig CDR against updates; 'D' Copies the disposition + from the orig CDR to the new CDR after reset; 'e' sets the 'end' time on the + original CDR; 'R' prevents the new CDR from being reset; 's(var=val)' adds/changes + the 'var' variable on the original CDR; 'T' forces ast_cdr_end(), ast_cdr_answer(), + obey the LOCKED flag on cdr's in the chain, and also the ast_cdr_setvar() func. + * The Dial() application no longer copies the language used by the caller to the callee's + channel. If you desire for the caller's channel's language to be used for file playback + to the callee, then the file specified may be prepended with "${CHANNEL(language)}/" . + * SendImage() no longer hangs up the channel on error; instead, it sets the + status variable SENDIMAGESTATUS to one of 'SUCCESS', 'FAILURE', or + 'UNSUPPORTED'. This change makes SendImage() more consistent with other + applications. + * Park has a new option, 's', which silences the announcement of the parking space number. + * A non-numeric, zero, or negative timeout specified to Dial() will now be interpreted as + invalid input and will be assumed to mean that no timeout is desired. + +SIP Changes +----------- + * Added DNS manager support to registrations for peers referencing peer entries. + DNS manager runs in the background which allows DNS lookups to be run asynchronously + as well as periodically updating the IP address. These properties allow for + better performance as well as recovery in the event of an IP change. + * Performance improvements via using hash tables (astobj2) and doubly-linked lists to improve + load/reload of large numbers of peers/users by ~40x (for large lists of peers). + These changes also provide performance improvements for call setup and tear down. + * Added ability to specify registration expiry time on a per registration basis in + the register line. + * Added support for T140 RED - redundancy in T.140 to prevent text loss due to + lost packets. + * Added t38pt_usertpsource option. See sip.conf.sample for details. + * Added SIPnotify AMI command, for sending arbitrary SIP notify commands. + * 'sip show peers' and 'sip show users' display their entries sorted in + alphabetical order, as opposed to the order they were in, in the config + file or database. + * Videosupport now supports an additional option, "always", which always sets + up video RTP ports, even on clients that don't support it. This helps with + callfiles and certain transfers to ensure that if two video phones are + connected, they will always share video feeds. + +IAX Changes +----------- + * Existing DNS manager lookups extended to check for SRV records. + * IAX2 encryption support has been improved to support periodic key rotation + within a call for enhanced security. The option "keyrotate" has been + provided to disable this functionality to preserve backwards compatibility + with older versions of IAX2 that do not support key rotation. + +CLI Changes +----------- + * New CLI command, "data get [ []]" which retrieves the + data tree based on the given . + * New CLI command "data show providers" that will display all the registered + callbacks. + * New CLI command, "config reload " which reloads any module that + references that particular configuration file. Also added "config list" + which shows which configuration files are in use. + * New CLI commands, "pri show version" and "ss7 show version" that will + display which version of libpri and libss7 are being used, respectively. + A new API call was added so trunk will now have to be compiled against + a versions of libpri and libss7 that have them or it will not know that + these libraries exist. + * The commands "core show globals", "core set global" and "core set chanvar" has + been deprecated in favor of the more semanticly correct "dialplan show globals", + "dialplan set chanvar" and "dialplan set global". + * New CLI command "dialplan show chanvar" to list all variables associated + with a given channel. + +DNS manager changes +------------------- + * Addresses managed by DNS manager now can check to see if there is a DNS + SRV record for a given domain and will use that hostname/port if present. + +AMI - The manager (TCP/TLS/HTTP) +-------------------------------- + * The Status command now takes an optional list of variables to display + along with channel status. + * The QueueEntry event now also includes the channel's uniqueid + +ODBC Changes +------------ + * res_odbc no longer has a limit of 1023 total possible unshared connections, + as some people were running into this limit. This limit has been increased + to 4.2 billion. + +Queue changes +------------- + * The TRANSFER queue log entry now includes the the caller's original + position in the transferred-from queue. + * A new configuration option, "timeoutpriority" has been added. Please see the section labeled + "QUEUE TIMING OPTIONS" in configs/queues.conf.sample for a detailed explanation of the option + as well as an explanation about timeout options in general + * Added a new option - C - for forcing the "answered elsewhere" flag on + cancellation of calls in to members of the queue. This is to avoid the + call to a member of a queue having the call listed as a "missed call". + +Realtime changes +---------------- + * Several (ODBC, Postgres, MySQL, SQLite) realtime drivers have been given + adaptive capabilities. What this means in practical terms is that if your + realtime table lacks critical fields, Asterisk will now emit warnings to + that effect. Also, some of the realtime drivers have the ability (if + configured) to automatically add those columns to the table with the + correct type and length. + +Miscellaneous +------------- + * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND can now be set using + the 'setvar' option to cause a given audio file to be played upon completion + of an attended transfer. Currently it works for DAHDI, IAX2, SIP, and + Skinny channels only. + * You can now compile Asterisk against the Hoard Memory Allocator, see the + Hoard page on the Asterisk wiki for more information: + https://wiki.asterisk.org/wiki/x/pQBB + * Config file variables may now be appended to, by using the '+=' append + operator. This is most helpful when working with long SQL queries in + func_odbc.conf, as the queries no longer need to be specified on a single + line. + * CDR config file, cdr.conf, has an added option, "initiatedseconds", + which will add a second to the billsec when the ending + time is set, if the number in the microseconds field of the end time is + greater than the number of microseconds in the answer time. This allows + users to count the 'initiated' seconds in their billing records. + +------------------------------------------------------------------------------ +--- Functionality changes from Asterisk 1.4.X to Asterisk 1.6.0 ------------- +------------------------------------------------------------------------------ + +AMI - The manager (TCP/TLS/HTTP) +-------------------------------- + * Manager has undergone a lot of changes, all of them documented + on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/tQBB + * Manager version has changed to 1.1 + * Added a new action 'CoreShowChannels' to list currently defined channels + and some information about them. + * Added a new action 'SIPshowregistry' to list SIP registrations. + * Added TLS support for the manager interface and HTTP server + * Added the URI redirect option for the built-in HTTP server + * The output of CallerID in Manager events is now more consistent. + CallerIDNum is used for number and CallerIDName for name. + * Enable https support for builtin web server. + See configs/http.conf.sample for details. + * Added a new action, GetConfigJSON, which can return the contents of an + Asterisk configuration file in JSON format. This is intended to help + improve the performance of AJAX applications using the manager interface + over HTTP. + * SIP and IAX manager events now use "ChannelType" in all cases where we + indicate channel driver. Previously, we used a mixture of "Channel" + and "ChannelDriver" headers. + * Added a "Bridge" action which allows you to bridge any two channels that + are currently active on the system. + * Added a "ListAllVoicemailUsers" action that allows you to get a list of all + the voicemail users setup. + * Added 'DBDel' and 'DBDelTree' manager commands. + * cdr_manager now reports events via the "cdr" level, separating it from + the very verbose "call" level. + * Manager users are now stored in memory. If you change the manager account + list (delete or add accounts) you need to reload manager. + * Added Masquerade manager event for when a masquerade happens between + two channels. + * Added "manager reload" command for the CLI + * Lots of commands that only provided information are now allowed under the + Reporting privilege, instead of only under Call or System. + * The IAX* commands now require either System or Reporting privilege, to + mirror the privileges of the SIP* commands. + * Added ability to retrieve list of categories in a config file. + * Added ability to retrieve the content of a particular category. + * Added ability to empty a context. + * Created new action to create a new file. + * Updated delete action to allow deletion by line number with respect to category. + * Added new action insert to add new variable to category at specified line. + * Updated action newcat to allow new category to be inserted in file above another + existing category. + * Added new event "JitterBufStats" in the IAX2 channel + * Originate now requires the Originate privilege and, if you want to call out + to a subshell, it requires the System privilege, as well. This was done to + enhance manager security. + * Originate now accepts codec settings with "Codecs: alaw, ulaw, h264" + * New command: Atxfer. See https://wiki.asterisk.org/wiki/x/uABB for more details + or manager show command Atxfer from the CLI + * New command: IAXregistry. See https://wiki.asterisk.org/wiki/x/uABB for more + details or manager show command IAXregistry from the CLI + +Dialplan functions +------------------ + * Added the DEVICE_STATE() dialplan function which allows retrieving any device + state in the dialplan, as well as creating custom device states that are + controllable from the dialplan. + * Extend CALLERID() function with "pres" and "ton" parameters to + fetch string representation of calling number presentation indicator + and numeric representation of type of calling number value. + * MailboxExists converted to dialplan function + * A new option to Dial() for telling IP phones not to count the call + as "missed" when dial times out and cancels. + * Added LOCK(), TRYLOCK(), and UNLOCK(), which provide a single level dialplan + mutex. No deadlocks are possible, as LOCK() only allows a single lock to be + held for any given channel. Also, locks are automatically freed when a + channel is hung up. + * Added HINT() dialplan function that allows retrieving hint information. + Hints are mappings between extensions and devices for the sake of + determining the state of an extension. This function can retrieve the list + of devices or the name associated with a hint. + * Added EXTENSION_STATE() dialplan function which allows retrieving the state + of any extension. + * Added SYSINFO() dialplan function which allows retrieval of system information + * Added a new dialplan function, DIALPLAN_EXISTS(), which allows you to check for + the existence of a dialplan target. + * Added two new dialplan functions, TOUPPER and TOLOWER, which convert a string to + upper and lower case, respectively. + * When bridging, Asterisk sets the BRIDGEPVTCALLID to the channel drivers unique + ID for the call (not the Asterisk call ID or unique ID), provided that the + channel driver supports this. For SIP, you get the SIP call-ID for the + bridged channel which you can store in the CDR with a custom field. + +CLI Changes +----------- + * Added CLI permissions, config file: cli_permissions.conf + default is to allow all commands for every local user/group. + Also this new feature added three new CLI commands: + - cli check permissions {|@|@} [] + - cli reload permissions + - cli show permissions + * New CLI command "core show hint" (usage: core show hint ) + * New CLI command "core show settings" + * Added 'core show channels count' CLI command. + * Added the ability to set the core debug and verbose values on a per-file basis. + * Added 'queue pause member' and 'queue unpause member' CLI commands + * Ability to set process limits ("ulimit") without restarting Asterisk + * Enhanced "agi debug" to print the channel name as a prefix to the debug + output to make debugging on busy systems much easier. + * New CLI commands "dialplan set extenpatternmatching true/false" + * New CLI command: "core set chanvar" to set a channel variable from the CLI. + * Added an easy way to execute Asterisk CLI commands at startup. Any commands + listed in the startup_commands section of cli.conf will get executed. + * Added a CLI command, "devstate change", which allows you to set custom device + states from the func_devstate module that provides the DEVICE_STATE() function + and handling of the "Custom:" devices. + * New CLI command: "sip show sched" which shows all ast_sched entries for sip, + sorted into the different possible callbacks, with the number of entries + currently scheduled for each. Gives you a feel for how busy the sip channel + driver is. + * Added 'skinny show lines verbose' CLI command. This will show the subs for every channel. + * Cleanup another bunch of CLI commands. Now all modules follow the same schema. + (Done by lmadsen, junky and mvanbaak during the devcon 2008) + +SIP changes +----------- + * Added a new 'faxdetect=yes|no' configuration option to sip.conf. When this + option is enabled, Asterisk will watch for a CNG tone in the incoming audio + for a received call. If it is detected, the channel will jump to the + 'fax' extension in the dialplan. + * The default SIP useragent= identifier now includes the Asterisk version + * A new option, match_auth_username in sip.conf changes the matching of incoming requests. + If set, and the incoming request carries authentication info, + the username to match in the users list is taken from the Digest header + rather than from the From: field. This feature is considered experimental. + * The "musiconhold" and "musicclass" settings in sip.conf are now removed, + since they where replaced by "mohsuggest" and "mohinterpret" in version 1.4 + * The "localmask" setting was removed in version 1.2 and the reminder about it + being removed is now also removed. + * A new option "busylevel" for setting a level of calls where asterisk reports + a device as busy, to separate it from call-limit. This value is also added + to the SIP_PEER dialplan function. + * A new realtime family called "sipregs" is now supported to store SIP registration + data. If this family is defined, "sippeers" will be used for configuration and + "sipregs" for registrations. If it's not defined, "sippeers" will be used for + registration data, as before. + * The SIPPEER function have new options for port address, call and pickup groups + * Added support for T.140 realtime text in SIP/RTP + * The "checkmwi" option has been removed from sip.conf, as it is no longer + required due to the restructuring of how MWI is handled. See the descriptions + in this file of the "pollmailboxes" and "pollfreq" options to voicemail.conf + for more information. + * Added rtpdest option to CHANNEL() dialplan function. + * Added SIPREFERRINGCONTEXT and SIPREFERREDBYHDR variables which are set when a transfer takes place. + * SIP now adds a header to the CANCEL if the call was answered by another phone + in the same dial command, or if the new c option in dial() is used. + * The new default is that 100 Trying is not sent on REGISTER attempts as the RFC specifically + states it is not needed. For phones, however, that do require it the "registertrying" option + has been added so it can be enabled. + * A new option called "callcounter" (global/peer/user level) enables call counters needed + for better status reports needed for queues and SIP subscriptions. (Call-Limit was previously + used to enable this functionality). + * New settings for timer T1 and timer B on a global level or per device. This makes it + possible to force timeout faster on non-responsive SIP servers. These settings are + considered advanced, so don't use them unless you have a problem. + * Added a dial string option to be able to set the To: header in an INVITE to any + SIP uri. + * Added a new global and per-peer option, qualifyfreq, which allows you to configure + the qualify frequency. + * Added SIP Session Timers support (RFC 4028). This prevents stuck SIP sessions that + were not properly torn down due to network or endpoint failures during an established + SIP session. + * Added experimental TCP and TLS support for SIP. See https://wiki.asterisk.org/wiki/x/ygBB + and configs/sip.conf.sample for more information on how it is used. + * Added a new configuration option "authfailureevents" that enables manager events when + a peer can't authenticate properly. + * Added DNS manager support to registrations for peers not referencing a peer entry. + +IAX2 changes +------------ + * Added the trunkmaxsize configuration option to chan_iax2. + * Added the srvlookup option to iax.conf + * Added support for OSP. The token is set and retrieved through the CHANNEL() + dialplan function. + +XMPP Google Talk/Jingle changes +------------------------------- + * Added the bindaddr option to gtalk.conf. + +Skinny changes +------------- + * Added skinny show device, skinny show line, and skinny show settings CLI commands. + * Proper codec support in chan_skinny. + * Added settings for IP and Ethernet QoS requests + +MGCP changes +------------ + * Added separate settings for media QoS in mgcp.conf + +Console Channel Driver changes +------------------------------ + * Added experimental support for video send & receive to chan_oss. + This requires SDL and ffmpeg/avcodec, plus Video4Linux or X11 to act as + a video source. + +Phone channel changes (chan_phone) +---------------------------------- + * Added G729 passthrough support to chan_phone for Sigma Designs boards. + +H.323 channel Changes +--------------------- + * H323 remote hold notification support added (by NOTIFY message + and/or H.450 supplementary service) + +Local channel changes +--------------------- + * The device state functionality in the Local channel driver has been updated + to indicate INUSE or NOT_INUSE when a Local channel is being used as opposed + to just UNKNOWN if the extension exists. + * Added jitterbuffer support for chan_local. This allows you to use the + generic jitterbuffer on incoming calls going to Asterisk applications. + For example, this would allow you to use a jitterbuffer for an incoming + SIP call to Voicemail by putting a Local channel in the middle. This + feature is enabled by using the 'j' option in the Dial string to the Local + channel in conjunction with the existing 'n' option for local channels. + * A 'b' option has been added which causes chan_local to return the actual channel + that is behind it when queried. This is useful for transfer scenarios as the + actual channel will be transferred, not the Local channel. + +Agent channel changes +---------------------- + * The ackcall and endcall options are now supplemented with options acceptdtmf + and enddtmf. These allow for the DTMF keypress to be configurable. The options + default to their old hard-coded values ('#' and '*' respectively) so this should + not break any existing agent installations. + +DAHDI channel driver (chan_dahdi) Changes +---------------------------------------- + * SS7 support (via libss7 library) + * In India, some carriers transmit CID via dtmf. Some code has been added + that will handle some situations. The cidstart=polarity_IN choice has been added for + those carriers that transmit CID via dtmf after a polarity change. + * CID matching information is now shown when doing 'dialplan show'. + * Added dahdi show version CLI command. + * Added setvar support to chan_dahdi.conf channel entries. + * Added two new options: mwimonitor and mwimonitornotify. These options allow + you to enable MWI monitoring on FXO lines. When the MWI state changes, + the script specified in the mwimonitornotify option is executed. An internal + event indicating the new state of the mailbox is also generated, so that + the normal MWI facilities in Asterisk work as usual. + * Added signalling type 'auto', which attempts to use the same signalling type + for a channel as configured in DAHDI. This is primarily designed for analog + ports, but will also work for digital ports that are configured for FXS or FXO + signalling types. This mode is also the default now, so if your chan_dahdi.conf + does not specify signalling for a channel (which is unlikely as the sample + configuration file has always recommended specifying it for every channel) then + the 'auto' mode will be used for that channel if possible. + * Added a 'dahdi set dnd' command to allow CLI control of the Do-Not-Disturb + state for a channel; also ensured that the DNDState Manager event is + emitted no matter how the DND state is set or cleared. + +New Channel Drivers +------------------- + * Added a new channel driver, chan_unistim. See the Asterisk wiki at + https://wiki.asterisk.org/wiki/x/vgsiAQ and configs/unistim.conf.sample + for details. This new channel driver allows you to use Nortel i2002, + i2004, and i2050 phones with Asterisk. + * Added a new channel driver, chan_console, which uses portaudio as a cross + platform audio interface. It was written as a channel driver that would + work with Mac CoreAudio, but portaudio supports a number of other audio + interfaces, as well. Note that this channel driver requires v19 or higher + of portaudio; older versions have a different API. + +DUNDi changes +------------- + * Added the ability to specify arguments to the Dial application when using + the DUNDi switch in the dialplan. + * Added the ability to set weights for responses dynamically. This can be + done using a global variable or a dialplan function. Using the SHELL() + function would allow you to have an external script set the weight for + each response. + * Added two new dialplan functions, DUNDIQUERY and DUNDIRESULT. These + functions will allow you to initiate a DUNDi query from the dialplan, + find out how many results there are, and access each one. + * Added the ability to specifiy a port for a dundi peer. + +ENUM changes +------------ + * Added two new dialplan functions, ENUMQUERY and ENUMRESULT. These + functions will allow you to initiate an ENUM lookup from the dialplan, + and Asterisk will cache the results. ENUMRESULT can be used to access + the results without doing multiple DNS queries. + +Voicemail Changes +----------------- + * Added the ability to customize which sound files are used for some of the + prompts within the Voicemail application by changing them in voicemail.conf + * Added the ability for the "voicemail show users" CLI command to show users + configured by the dynamic realtime configuration method. + * MWI (Message Waiting Indication) handling has been significantly + restructured internally to Asterisk. It is now totally event based + instead of polling based. The voicemail application will notify other + modules that have subscribed to MWI events when something in the mailbox + changes. + This also means that if any other entity outside of Asterisk is changing + the contents of mailboxes, then the voicemail application still needs to + poll for changes. Examples of situations that would require this option + are web interfaces to voicemail or an email client in the case of using + IMAP storage. So, two new options have been added to voicemail.conf + to account for this: "pollmailboxes" and "pollfreq". See the sample + configuration file for details. + * Added "tw" language support + * Added support for storage of greetings using an IMAP server + * Added ability to customize forward, reverse, stop, and pause keys for message playback + * SMDI is now enabled in voicemail using the smdienable option. + * A "lockmode" option has been added to asterisk.conf to configure the file + locking method used for voicemail, and potentially other things in the + future. The default is the old behavior, lockfile. However, there is a + new method, "flock", that uses a different method for situations where the + lockfile will not work, such as on SMB/CIFS mounts. + * Added the ability to backup deleted messages, to ease recovery in the case + that a user accidentally deletes a message, and discovers that they need it. + * Reworked the SMDI interface in Asterisk. The new way to access SMDI information + is through the new functions, SMDI_MSG_RETRIEVE() and SMDI_MSG(). The file + smdi.conf can now be configured with options to map SMDI station IDs to Asterisk + voicemail boxes. The SMDI interface can also poll for MWI changes when some + outside entity is modifying the state of the mailbox (such as IMAP storage or + a web interface of some kind). + * Added the support for marking messages as "urgent." There are two methods to accomplish + this. One is to pass the 'U' option to VoiceMail(). Another way to mark a message as urgent + is to specify "review=yes" in voicemail.conf. Doing this will cause allow the user to mark + the message as urgent after he has recorded a voicemail by following the voice instructions. + When listening to voicemails using VoiceMailMain urgent messages will be presented before other + messages + * Added "is" language support + +Queue changes +------------- + * Added the general option 'shared_lastcall' so that member's wrapuptime may be + used across multiple queues. + * Added QUEUE_VARIABLES function to set queue variables added setqueuevar and + setqueueentryvar options for each queue, see queues.conf.sample for details. + * Added keepstats option to queues.conf which will keep queue + statistics during a reload. + * setinterfacevar option in queues.conf also now sets a variable + called MEMBERNAME which contains the member's name. + * Added 'Strategy' field to manager event QueueParams which represents + the queue strategy in use. + * Added option to run macro when a queue member is connected to a caller, + see queues.conf.sample for details. + * app_queue now has a 'loose' option which is almost exactly like 'strict' except it + does not count paused queue members as unavailable. + * Added min-announce-frequency option to queues.conf which allows you to control the + minimum amount of time between queue announcements for use when the caller's queue + position changes frequently. + * Added additional information to EXITWITHTIMEOUT and EXITWITHKEY events in the + queue log. + * Added ability for non-realtime queues to have realtime members + * Added the "linear" strategy to queues. + * Added the "wrandom" strategy to queues. + * Added new channel variable QUEUE_MIN_PENALTY + * QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY may be adjusted in mid-call by defining + rules in queuerules.conf. See configs/queuerules.conf.sample for details + * Added a new parameter for member definition, called state_interface. This may be + used so that a member may be called via one interface but have a different interface's + device state reported. + * Added new CLI and Manager commands relating to reloading queues. From the CLI, see + "queue reload", "queue reset stats". Also see "manager show command QueueReload" and + "manager show command QueueReset." + * New configuration option: randomperiodicannounce. If a list of periodic announcements is + specified by the periodic-announce option, then one will be chosen randomly when it is time + to play a periodic announcment + * New configuration options: announce-position now takes two more values in addition to "yes" and + "no." Two new options, "limit" and "more," are allowed. These are tied to another option, + announce-position-limit. By setting announce-position to "limit" callers will only have their + position announced if their position is less than what is specified by announce-position-limit. + If announce-position is set to "more" then callers beyond the position specified by announce-position-limit + will be told that their are more than announce-position-limit callers waiting. + * Two new queue log events have been added. An ADDMEMBER event will be logged + when a realtime queue member is added and a REMOVEMEMBER event will be logged + when a realtime queue member is removed. Since there is no calling channel associated + with these events, the string "REALTIME" is placed where the channel's unique id + is typically placed. + * The configuration method for the "joinempty" and "leavewhenempty" options has + changed to a comma-separated list of methods of determining member availability + instead of vague terms such as "yes," "loose," "no," and "strict." These old four + values are still accepted for backwards-compatibility, though. + * The average talktime is now calculated on queues. This information is reported via the + CLI commands "queue show" and "queues show"; through the AMI events AgentComplete, QueueSummary, + and QueueParams; and through the channelvariable QUEUETALKTIME if setinterfacevar=yes is set for + the queue. + +MeetMe Changes +-------------- + * The 'o' option to provide an optimization has been removed and its functionality + has been enabled by default. + * When a conference is created, the UNIQUEID of the channel that caused it to be + created is stored. Then, every channel that joins the conference will have the + MEETMEUNIQUEID channel variable set with this ID. This can be used to relate + callers that come and go from long standing conferences. + * Added a new application, MeetMeChannelAdmin, which is similar to MeetMeAdmin, + except it does operations on a channel by name, instead of number in a conference. + This is a very useful feature in combination with the 'X' option to ChanSpy. + * Added 'C' option to Meetme which causes a caller to continue in the dialplan + when kicked out. + * Added new RealTime functionality to provide support for scheduled conferencing. + This includes optional messages to the caller if they attempt to join before + the schedule start time, or to allow the caller to join the conference early. + Also included is optional support for limiting the number of callers per + RealTime conference. + * Added the S() and L() options to the MeetMe application. These are pretty + much identical to the S() and L() options to Dial(). They let you set + timeouts for the conference, as well as have warning sounds played to + let the caller know how much time is left, and when it is running out. + * Added the ability to do "meetme concise" with the "meetme" CLI command. + This extends the concise capabilities of this CLI command to include + listing all conferences, instead of an addition to the other sub commands + for the "meetme" command. + * Added the ability to specify the music on hold class used to play into the + conference when there is only one member and the M option is used. + * Added MEETME_INFO dialplan function which provides a way to query + various properties of a Meetme conference. + * Added new admin features: *81: Roll call, *82: eject all, *83: mute all, + and *84: record in-conf + +Other Dialplan Application Changes +---------------------------------- + * Argument support for Gosub application + * From the to-do lists: straighten out the app timeout args: + Wait() app now really does 0.3 seconds- was truncating arg to an int. + WaitExten() same as Wait(). + Congestion() - Now takes floating pt. argument. + Busy() - now takes floating pt. argument. + Read() - timeout now can be floating pt. + WaitForRing() now takes floating pt timeout arg. + SpeechBackground() -- clarified in the docstrings that the timeout is an integer seconds. + * Added 's' option to Page application. + * Added an optional timeout argument to the Page application. + * Added 'E', 'V', and 'P' commands to ExternalIVR. + * Added 'o' and 'X' options to Chanspy. + * Added a new dialplan application, Bridge, which allows you to bridge the + calling channel to any other active channel on the system. + * Added the ability to specify a music on hold class to play instead of ringing + for the SLATrunk application. + * The Read application no longer exits the dialplan on error. Instead, it sets + READSTATUS to ERROR, which you can catch and handle separately. + * Added 'm' option to Directory, which lists out names, 8 at a time, instead + of asking for verification of each name, one at a time. + * Privacy() no longer uses privacy.conf, as all options are specifyable as + direct options to the app. + * AMD() has a new "maximum word length" option. "show application AMD" from the CLI + for more details + * GotoIfTime() now may branch based on a "false" condition, like other Goto-related applications + * The ChannelRedirect application no longer exits the dialplan if the given channel + does not exist. It will now set the CHANNELREDIRECT_STATUS variable to SUCCESS upon success + or NOCHANNEL if the given channel was not found. + * The silencethreshold setting that was previously configurable in multiple + applications is now settable globally via dsp.conf. + +Music On Hold Changes +--------------------- + * A new option, "digit", has been added for music on hold classes in + musiconhold.conf. If this is set for a music on hold class, a caller + listening to music on hold can press this digit to switch to listening + to this music on hold class. + * Support for realtime music on hold has been added. + * In conjunction with the realtime music on hold, a general section has + been added to musiconhold.conf, its sole variable is cachertclasses. If this + is set, then music on hold classes found in realtime will be cached in memory. + +AEL Changes +----------- + * AEL upgraded to use the Gosub with Arguments instead + of Macro application, to hopefully reduce the problems + seen with the artificially low stack ceiling that + Macro bumps into. Macros can only call other Macros + to a depth of 7. Tests run using gosub, show depths + limited only by virtual memory. A small test demonstrated + recursive call depths of 100,000 without problems. + -- in addition to this, all apps that allowed a macro + to be called, as in Dial, queues, etc, are now allowing + a gosub call in similar fashion. + * AEL now generates LOCAL(argname) declarations when it + Set()'s the each arg name to the value of ${ARG1}, ${ARG2), + etc. That makes the arguments local in scope. The user + can define their own local variables in macros, now, + by saying "local myvar=someval;" or using Set() in this + fashion: Set(LOCAL(myvar)=someval); ("local" is now + an AEL keyword). + * utils/conf2ael introduced. Will convert an extensions.conf + file into extensions.ael. Very crude and unfinished, but + will be improved as time goes by. Should be useful for a + first pass at conversion. + * aelparse will now read extensions.conf to see if a referenced + macro or context is there before issueing a warning. + * AEL parser sets a local channel variable ~~EXTEN~~, to + preserve the value of ${EXTEN} thru switch statements. + * New operator in $[...] expressions: the ~~ operator serves + as a concatenation operator. AT THE MOMENT, it is really only + necessary and useful in AEL, especially in if() expressions. + Operation: ${a} ~~ ${b| with force both a and b to strings, strip + any enclosing double-quotes, and evaluate to the value of a + concatenated with the value of b. For example if a is set to + "xyz" and b has the value "abc", then ${a} ~~ ${b| would + evaluate to xyzabc . + + +Call Features (res_features) Changes +------------------------------------ + * Added the parkedcalltransfers option to features.conf + * Added parkedcallparking option to control one touch parking w/ parking + pickup + * Added parkedcallhangup option to control disconnect feature w/ parking + pickup + * Added parkedcallrecording option to control one-touch record w/ parking + pickup + * Added parkedcallparking, parkedcallhangup, parkedcallrecording, and + parkedcalltransfers option support for multiple parking lots. + * Added BRIDGE_FEATURES variable to set available features for a channel + * The built-in method for doing attended transfers has been updated to + include some new options that allow you to have the transferee sent + back to the person that did the transfer if the transfer is not successful. + See the options "atxferdropcall", "atxferloopdelay", and "atxfercallbackretries" + in features.conf.sample. + * Added support for configuring named groups of custom call features in + features.conf. This means that features can be written a single time, and + then mapped into groups of features for different key mappings or easier + access control. + * Updated the ParkedCall application to allow you to not specify a parking + extension. If you don't specify a parking space to pick up, it will grab + the first one available. + * Added cli command 'features reload' to reload call features from features.conf + * Moved into core asterisk binary. + * Changed the default setting for featuredigittimeout to 2000 ms from 500 ms. + * Added the ability for custom parking lots to be configured with their own + parking extension with the parkext option. + +Language Support Changes +------------------------ + * Brazilian Portuguese (pt-BR) in VM, and say.c was added + * Added support for the Hungarian language for saying numbers, dates, and times. + +AGI Changes +----------- + * Added SPEECH commands for speech recognition. A complete listing can be found + using agi show. + * If app_stack is loaded, GOSUB is a native AGI command that may be used to + invoke subroutines in the dialplan. Note that calling EXEC with Gosub + does not behave as expected; the native command needs to be used, instead. + * Added the ability to perform SRV lookups on fast AGI calls. To use this + feature, simply use hagi: instead of agi: as the protocol portion + of the URI parameter to the AGI function call in your dial plan. Also note + that specifying a port number in the AGI URI will disable SRV lookups, + even if you use the hagi: protocol. + * No longer support MSG_OOB flag on HANGUP. + +Logger changes +-------------- + * Added rotatestrategy option to logger.conf, along with two new options: + "timestamp" which will use the time to name the logger files instead of + sequence number; and "rotate", which rotates the names of the log files, + similar to the way syslog rotates files. + * Added exec_after_rotate option to logger.conf, which allows a system + command to be run after rotation. This is primarily useful with + rotatestrategy=rotate, to allow a limit on the number of log files kept + and to ensure that the oldest log file gets deleted. + * Added realtime support for the queue log + +Call Detail Records +------------------- + * The cdr_manager module has a [mappings] feature, like cdr_custom, + to add fields to the manager event from the CDR variables. + * Added cdr_adaptive_odbc, a new module that adapts to the structure of your + backend database CDR table. Specifically, additional, non-standard + columns are supported, merely by setting the corresponding CDR variable in + your dialplan. In addition, you may alias any column to another name (for + example, if you want the 'src' CDR variable to be column 'ANI' in the DB, + simply "alias src => ANI" in the configuration file). Records may be + posted to more than one backend, simply by specifying multiple categories + in the configuration file. And finally, you may filter which CDRs get + posted to each backend, by specifying a filter (which the record must + match) for the particular category. Filters are additive (meaning all + rules must match to post that CDR). + * The Postgres CDR module now supports some features of the cdr_adaptive_odbc + module. Specifically, you may add additional columns into the table and + they will be set, if you set the corresponding CDR variable name. Also, + if you omit columns in your database table, they will be silently skipped + (but a record will still be inserted, based on what columns remain). Note + that the other two features from cdr_adaptive_odbc (alias and filter) are + not currently supported. + * The ResetCDR application now has an 'e' option that re-enables a CDR if it + has been disabled using the NoCDR application. + +Miscellaneous New Modules +------------------------- + * Added a new CDR module, cdr_sqlite3_custom. + * Added a new realtime configuration module, res_config_sqlite + * Added a new codec translation module, codec_resample, which re-samples + signed linear audio between 8 kHz and 16 kHz to help support wideband + codecs. + * Added a new module, res_phoneprov, which allows auto-provisioning of phones + based on configuration templates that use Asterisk dialplan function and + variable substitution. It should be possible to create phone profiles and + templates that work for the majority of phones provisioned over http. It + is currently only intended to provision a single user account per phone. + An example profile and set of templates for Polycom phones is provided. + NOTE: Polycom firmware is not included, but should be placed in + AST_DATA_DIR/phoneprov/configs to match up with the included templates. + * Added a new module, app_jack, which provides interfaces to JACK, the Jack + Audio Connection Kit (http://www.jackaudio.org/). Two interfaces are + provided; there is a JACK() application, and a JACK_HOOK() function. Both + interfaces create an input and output JACK port. The application makes + these ports the endpoint of the call. The audio coming from the channel + goes out the output port and whatever comes back in on the input port is + what gets sent to the channel. The JACK_HOOK() function turns on a JACK + audiohook on the channel. This lets you run the audio coming from a + channel through JACK, and whatever comes back in is what gets forwarded + on as the channel's audio. This is very useful for building custom + vocoders or doing recording or analysis of the channel's audio in another + application. + * Added a new module, res_config_curl, which permits using a HTTP POST url + to retrieve, create, update, and delete realtime information from a remote + web server. Note that this module requires func_curl.so to be loaded for + backend functionality. + * Added a new module, res_config_ldap, which permits the use of an LDAP + server for realtime data access. + * Added support for writing and running your dialplan in lua using the pbx_lua + module. See configs/extensions.lua.sample for examples of how to do this. + +Miscellaneous +------------- + * Ability to use libcap to set high ToS bits when non-root + on Linux. If configure is unable to find libcap then you + can use --with-cap to specify the path. + * Added maxfiles option to options section of asterisk.conf which allows you to specify + what Asterisk should set as the maximum number of open files when it loads. + * Added the jittertargetextra configuration option. + * Added support for setting the CoS for VLAN traffic (802.1p). See the sample + configuration files for the IP channel drivers. The new option is "cos". + This information is also documented on the Asterisk wiki at + https://wiki.asterisk.org/wiki/x/EYBG + * When originating a call using AMI or pbx_spool that fails the reason for failure + will now be available in the failed extension using the REASON dialplan variable. + * Added support for reading the TOUCH_MONITOR_PREFIX channel variable. + It allows you to configure a prefix for auto-monitor recordings. + * A new extension pattern matching algorithm, based on a trie, is introduced + here, that could noticeably speed up mid-sized to large dialplans. + It is NOT used by default, as duplicating the behaviour of the old pattern + matcher is still under development. A config file option, in extensions.conf, + in the [general] section, called "extenpatternmatchingnew", is by default + set to false; setting that to true will force the use of the new algorithm. + Also, the cli commands "dialplan set extenpatternmatchingnew true/false" can + be used to switch the algorithms at run time. + * A new option when starting a remote asterisk (rasterisk, asterisk -r) for + specifying which socket to use to connect to the running Asterisk daemon + (-s) + * Performance enhancements to the sched facility, which is used in + the channel drivers, etc. Added hashtabs and doubly-linked lists + to speed up deletion; start at the beginning or end of list to + speed up insertion. + * Added Doubly-linked lists after the fashion of linkedlists.h. They are in + dlinkedlists.h. Doubly-linked lists feature fast deletion times. + Added regression tests to the tests/ dir, also. + * Added a refcount trace feature to astobj2 for those trying to balance + object creation, deletion; work, play; space and time. See the + notes in astobj2.h. Also, see utils/refcounter as well, as a + quick way to find unbalanced refcounts in what could be a sea + of objects that were balanced. + * Added logging to 'make update' command. See update.log + * Added strictrtp option to rtp.conf. If enabled this will drop RTP packets that + do not come from the remote party. + * Added the 'n' option to the SpeechBackground application to tell it to not + answer the channel if it has not already been answered. + * Added a compiler flag, CHANNEL_TRACE, which permits channel tracing to be + turned on, via the CHANNEL(trace) dialplan function. Could be useful for + dialplan debugging. + * iLBC source code no longer included (see UPGRADE.txt for details) + * If compiled with DETECT_DEADLOCKS enabled and if you have glibc, then if + deadlock is detected, a backtrace of the stack which led to the lock calls + will be output to the CLI. + * If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing + the "core show locks" CLI command will give lock information output as well + as a backtrace of the stack which led to the lock calls. + * users.conf now sports an optional alternateexts property, which permits + allocation of additional extensions which will reach the specified user. + * A new option for the configure script, --enable-internal-poll, has been added + for use with systems which may have a buggy implementation of the poll system + call. If you notice odd behavior such as the CLI being unresponsive on remote + consoles, you may want to try using this option. This option is enabled by default + on Darwin systems since it is known that the Darwin poll() implementation has + odd issues. + +Timer Changes +-------------------- +* In addition to timing from DAHDI, there is a new timing module called + res_timing_timerfd. In order to use this, you must be running Linux with + a kernel version 2.6.25 or newer as well as glibc 2.8 or newer. The configure + script will be able to tell if you have the requirements. From menuselect, select + res_timing_timerfd from the Resource Modules menu. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..aa2ebac --- /dev/null +++ b/COPYING @@ -0,0 +1,341 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/CREDITS b/CREDITS new file mode 100644 index 0000000..6ee8a6e --- /dev/null +++ b/CREDITS @@ -0,0 +1,356 @@ + +=== DEVELOPMENT SUPPORT === + + We'd like to thank the following companies for helping fund development of + Asterisk. + + * Pilosoft, Inc. - for supporting ADSI development in Asterisk + + * Asterlink, Inc. - for supporting broad Asterisk development + + * GFS - for supporting ALSA development + + * Telesthetic - for supporting SIP development + + * Christos Ricudis - for substantial code contributions + + * nic.at - ENUM support in Asterisk + + * Paul Bagyenda, Digital Solutions - for initial Voicetronix driver + development. + + * John Todd, TalkPlus, Inc. and JR Richardson, Ntegrated Solutions. + for funding the development of SIP Session Timers support. + + * Omnitor AB, Gunnar Hellström, for funding work with videocaps, + T.140 RED, originate with video/text and many more + contributions. + + * ClearIT AB for work with meetme, res_mutestream, RTCP, manager and + tonezones. + + * NetNation Communications (www.netnation.com) + Kevin Lindsay + Persistent Dynamic Queue Members + + * inAccess Networks (work funded by Hellas On Line (HOL) www.hol.gr) + Priorities in queues + + * Voop AS, Nuvio Inc, Inotel S.A and Foniris Telecom A/S - funding for + rewrite of SIP transfers + + +=== WISHLIST CONTRIBUTERS === + + We'd like to thank the following for contributing to our wishlist + + * Jeremy McNamara - SpeeX support + + * Nick Seraphin - RDNIS support + + * Gary - Phonejack ADSI (in progress) + + * Wasim - Hangup detect + +=== HARDWARE DONORS === + + We'd like to thank the following for granting access to hardware for testing. + + * Thanks to QuickNet Technologies for their donation of an Internet + PhoneJack and Linejack card to the project. + (http://www.quicknet.net) + + * Thanks to VoipSupply for their donation of Sipura ATAs to the project + for T.38 testing. (http://www.voipsupply.com) + + * Thanks to Grandstream for their donation of ATAs to the project for + T.38 testing. (http://www.grandstream.com) + +=== MISCELLANEOUS PATCHES === + + We'd like to thank the following for their patches + + * Jim Dixon - Zapata Telephony and app_rpt + http://www.zapatatelephony.org/app_rpt.html + + * Russell Bryant - Asterisk release manager and countless enhancements + and bug fixes. russell(AT)digium.com + + * Anthony Minessale II - Countless big and small fixes, and relentless + forward push. ChanSpy, ForkCDR, ControlPlayback, While/EndWhile, + DumpChan, Dictate, MacroIf, ExecIf, ExecIfTime, RetryDial, + MixMonitor applications; many realtime concepts and + implementation pieces, including res_config_odbc; format_slin; + cdr_custom; several features in Dial including L(), G() and + enhancements to M() and D(); several CDR enhancements including + CDR variables; attended transfer; one touch record; native MOH; + manager eventmask; command line '-t' flag to allow + recording/voicemail on nfs shares; #exec command and multiline + comments in config files; setvar in iax and sip configs. + anthmct(AT)yahoo.com http://www.asterlink.com + + * James Golovich - Innumerable contributions, including SIP TCP and TLS + support. You can find him and asterisk-perl at + http://asterisk.gnuinter.net + + * Andre Bierwirth - Extension hints and status + + * Jean-Denis Girard - Various contributions from the South Pacific + Islands jd-girard(AT)sysnux.pf http://www.sysnux.pf + + * William Jordan / Vonage - MySQL enhancements to Voicemail + wjordan(AT)vonage.com + + * Jac Kersing - Various fixes + + * Steven Critchfield - Seek and Trunc functions for playback and + recording critch(AT)basesys.com + + * Jefferson Noxon - app_lookupcidname, app_db, and various other + contributions + + * Klaus-Peter Junghanns - in-band DTMF on SIP and MGCP + + * Ross Finlayson - Dynamic RTP payload support + + * Mahmut Fettahlioglu - Audio recording, music-on-hold changes, alaw + file format, and various fixes. Can be contacted at + mahmut(AT)oa.com.au + + * James Dennis - Cisco SIP compatibility patches to work with SIP + service providers. Can be contacted at asterisk(AT)jdennis.net + + * Tilghman Lesher - ast_localtime(); ast_say_date_with_format(); + GotoIfTime, SayUnixTime, HasNewVoicemail applications; + CUT, SORT, EVAL, CURL, FIELDQTY, STRFTIME, some QUEUE* + functions; func_odbc, cdr_adaptive_odbc, and other innumerable + bug fixes. tilghman(AT)digium.com + http://asterisk.drunkcoder.com + + * Jayson Vantuyl - Manager protocol changes, various other bugs. + jvantuyl(AT)computingedge.net + + * Thorsten Lockert - OpenBSD, FreeBSD ports, making MacOS X port run on + 10.3, dialplan include verification, route lookup on OpenBSD, + SNMP agent support (res_snmp), various other bugs. + tholo(AT)sigmasoft.com + + * Josh Roberson - chan_zap reload support, Advanced Voicemail Features, + & other misc. patches. josh(AT)asteriasgi.com + http://www.asteriasgi.com + + * William Waites - syslog support, SIP NAT traversal for SIP-UA. + ww(AT)styx.org + + * Rich Murphey - Porting to FreeBSD, NetBSD, OpenBSD, and Darwin. + rich(AT)whiteoaklabs.com http://whiteoaklabs.com + + * Simon Lockhart - Porting to Solaris (based on work of Logan ???) + simon(AT)slimey.org + + * Olle E. Johansson - SIP RFC compliance, documentation and testing, + testing, SIP outbound proxy support, Manager 1.1 update, SIP + transfer support, SIP presence support, SIP call state updates + (dialog-info), QUEUE_EXISTS function, device state provider + architecture, multiparking (together with mvanbaak), meetme and + parking device states, MiniVM - the small voicemail system, + RTP improvements, RTCP enhancements, DTMF timing fixes, + many documentation updates/corrections, and many bug fixes. + oej(AT)edvina.net, http://edvina.net + + * Steve Kann - new jitter buffer for IAX2 + stevek(AT)stevek.com + + * Constantine Filin - major contributions to the Asterisk Realtime + Architecture + + * Steve Murphy - privacy support, $[ ] parser upgrade, AEL2 parser + upgrade. murf(AT)digium.com + + * Claude Patry - bug fixes, feature enhancements, and bug marshalling + cpatry(AT)gmail.com + + * Miroslav Nachev, miro(AT)space-comm.com + COSMOS Software Enterprises, Ltd. + Variable for No Answer Timeout for Attended Transfer + + * Slav Klenov & Vanheuverzwijn Joachim - development of the generic + jitterbuffer Securax Ltd. info(AT)securax.be + + * Roy Sigurd Karlsbakk - providing funding for generic jitterbuffer + development roy(AT)karlsbakk.net, Briiz Telecom AS + + * Voop AS, Nuvio Inc, Inotel S.A and Foniris Telecom A/S - rewrite + of SIP transfers + + * Philippe Sultan - RADIUS CDR module, many fixes to res_jabber and + gtalk/jingle channel drivers. INRIA, http://www.inria.fr/ + + * John Martin, Aupix - Improved video support in the SIP channel + T.140 text support in RTP/SIP + + * Steve Underwood - Provided T.38 pass through support. + + * George Konstantoulakis - Support for Greek in voicemail added by + InAccess Networks (work funded by HOL, www.hol.gr) + gkon(AT)inaccessnetworks.com + + * Daniel Nylander - Support for Swedish and Norwegian languages in + voicemail. http://www.danielnylander.se/ + + * Stojan Sljivic - An option for maximum number of messsages per + mailbox in voicemail. Also an issue with voicemail + synchronization has been fixed. GDS Partners + www.gdspartners.com stojan.sljivic(AT)gdspartners.com + + * Bartosz Supczinski - Support for Polish added by DIR (www.dir.pl) + Bartosz.Supczinski(AT)dir.pl + + * James Rothenberger - Support for IMAP storage integration added by + OneBizTone LLC Work funded by University of Pennsylvania + jar(AT)onebiztone.com + + * Paul Cadach - Bringing chan_h323 up to date, bug fixes, and more! + + * Voop AS - Financial support for a lot of work with the SIP driver + and the IAX trunk MTU patch + + * Cedric Hans - Development of chan_unistim cedric.hans(AT)mlkj.net + + * Takao Takahashi & Mina Naguib - chan_unistim improvements for + smaller devices + + * Sergio Fadda - console_video: video support for chan_oss and + chan_alsa + + * Marta Carbone - console_video and the astobj2 framework + + * Luigi Rizzo - astobj2, console_video, windows build, chan_oss cleanup, + and a bunch of infrastructure work (loader, new_cli, ...) + + * Brett Bryant - digit option for musiconhold selection, ENUMQUERY and + ENUMRESULT functions, feature group configuration for + features.conf, per-file CLI debug and verbose settings, TCP and + TLS support for SIP, and various bug fixes. + brettbryant(AT)gmail.com + + * Sergey Tamkovich - Realtime support for MusicOnHold, store and destroy + realtime methods and implementations for odbc, sqlite, and pgsql + realtime drivers, attended transfer updates, multiple speeds for + ControlPlayback, and multiple bug fixes See + http://voip-info.org/users/view/sergee serg(AT)voipsolutions.ru + + * Klaus Darillon - the SIPremoveHeader function in chan_sip and SIP Path + Support. + + * Moises Silva (moy) - for writing LibOpenR2, and providing support for + it in chan_dahdi moises.silva(AT)gmail.com + + * Eliel C. Sardanons - XML documentation implementation, and various + other contributions eliels(AT)gmail.com + + * Sean Bright - Snom call pickup, newt interface for menuselect, + cdr_tds rewrite, countless other improvements, fixes, and good + ideas. sean(AT)malleable.com + + * Jan Kaláb - Calendaring support for Exchange Server 2007+ via + Exchange Web Services. + + * University of Oslo (uio.no), Norway - SIP Max-Forwards setting + support (developed by oej) + + * FCCN, Lissabon, Portugal - SIP show channels CLI command + (developed by oej) + + * Viagenie, Canada - IPv6 support in socket layers and SIP + implementation Developers: Marc Blanchet, Simon Perreault and + Jean-Philippe Dionne + + * ClearIT AB, Sweden - res_mutestream, queue_exists and various other + patches (developed by oej) + + * Despegar.com, Argentina - AstData API implementation, also sponsored + by Google as part of the gsoc/2009 program (developed by Eliel) + + * Philippe Lindheimer - DEV_STATE additions to CCSS + + * Andrew "lathama" Latham + Doxygen, HTTP-Static, Phoneprov, make update + + * George Joseph - PJSIP CLI commands, PJSIP_HEADER dialplan function + +=== OTHER CONTRIBUTIONS === + + We'd like to thank the following for their listed contributions. + + * John Todd - Monkey sounds and associated teletorture prompt + + * Michael Jerris - bug marshaling + + * Leif Madsen, Jared Smith and Jim van Meggelen - the Asterisk book + available under a Creative Commons License at + http://www.asteriskdocs.org + + * Brian M. Clapper - poll.c emulation + This product includes software developed by + Brian M. Clapper + +=== HOLD MUSIC === + + We'd like to thank the following for hold music + + * Music provided by www.opsound.org + +=== OTHER SOURCE CODE IN ASTERISK === + + We'd like to thank the following for their code use + + * Asterisk uses libedit, the lightweight readline replacement from + NetBSD. + * The cdr_radius module uses libradiusclient-ng, which is also from + NetBSD. + * They are BSD-licensed and require the following statement: + This product includes software developed by the NetBSD + Foundation, Inc. and its contributors. + + * Digium did not implement the codecs in Asterisk. + Here is the copyright on the GSM source: + Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann, + Technische Universitaet Berlin + +Any use of this software is permitted provided that this notice is not +removed and that neither the authors nor the Technische Universitaet Berlin +are deemed to have made any representations as to the suitability of this +software for any purpose nor are held responsible for any defects of +this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. + +As a matter of courtesy, the authors request to be informed about uses +this software has found, about bugs in this software, and about any +improvements that may be of general interest. + +Berlin, 28.11.1994 +Jutta Degener +Carsten Bormann + +And the copyright on the ADPCM source: + +Copyright 1992 by Stichting Mathematisch Centrum, Amsterdam, The +Netherlands. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..b599915 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,82771 @@ +2019-02-28 18:41 +0000 Asterisk Development Team + + * asterisk 16.2.1 Released. + +2019-01-30 13:25 +0000 [85f40b663a] George Joseph + + * res_pjsip_sdp_rtp: Fix return code from apply_negotiated_sdp_stream + + apply_negotiated_sdp_stream was returning a "1" when no joint + capabilities were found on an outgoing call instead of a "-1". + This indicated to res_pjsip_session that the handler DID handle + the sdp when in fact it didn't. Without the appropriate setup, + a subsequent media frame coming in would have an invalid stream_num + and cause a seg fault when the stream was attempted to be retrieved. + + apply_negotiated_sdp_stream now returns the correct "-1" and any + media is now discarded before it reaches the core stream processing. + + ASTERISK-28260 + Reported by: Sotiris Ganouris + + Change-Id: Ia095cb16b4862f2f6ad6d2d2a77453fa2542371f + +2019-02-27 10:37 +0000 [8b735172d1] George Joseph + + * CI: Update jenkinsfiles with new Gerrit URLs + + The recent upgrade of Gerrit to 2.16 elimiated referencing a + repository in a way the jenkinsfiles were relying on so + the URL references were changed to a more consistent and supported + format. + + Change-Id: I2e8e3f213b9a96bb1b27665eca4a9a24bc49820e + (cherry picked from commit 5ce084579f897096163b4e0c2ed4e8e1a8558cca) + +2019-02-15 16:31 +0000 Asterisk Development Team + + * asterisk 16.2.0 Released. + +2019-02-11 11:11 +0000 Asterisk Development Team + + * asterisk 16.2.0-rc2 Released. + +2019-02-07 09:23 +0000 [28edd2a5cb] Kevin Harwell + + * res_pjsip_registrar: lock transport monitor when setting 'removing' flag + + A previous patch attempt to mitigate blocked threads on transport shutdown for + a given contact. It was thought that a second lock could be avoided by checking + the 'removing' flag on the transport monitor twice (once before and once after + the normal named aor locking). However as with usual threading issues if the + timing was right the original problem still occured. + + This patch adds locking around the first 'removing' flag check and set, thus + nullifying the secondary check, so it was removed. + + ASTERISK-28213 + + Change-Id: Iaa8e36e5311789549b76d8de42dfcea96013b2ed + (cherry picked from commit 2cf3931379fcba961d7eb49a5ba1b8bfab9d68d8) + +2019-02-06 11:08 +0000 Asterisk Development Team + + * asterisk 16.2.0-rc1 Released. + +2018-11-19 18:44 +0000 [419db481d1] Giuseppe Sucameli + + * Fix deadlock handling subscribe req during res_parking reload + + Split destroy_hint method to separate hint removal and extension hint + state changed callback, the latter now called via stasis. + This avoids deadlock between res_parking reload that is removing the + parking lot and the related hint and subscribe requests coming for the + same parking lot. + + ASTERISK-28173 + + Change-Id: I5b03c3455b3b12b6f83cea4cc34f4b4b20444f7e + +2019-01-28 17:21 +0000 [19fc99a2fb] sungtae kim + + * Added ARI resource /ari/asterisk/ping + + Added ARI resource. + GET /ari/asterisk/ping : It returns "pong" message with timestamp + and asterisk id. It would be useful for simple heath check. + + Change-Id: I8d24e1dcc96f60f73437c68d9463ed746f688b29 + +2019-01-29 10:48 +0000 [1051e1dd18] Ben Ford + + * res_stasis: Auto-create context and extens on Stasis app launch. + + At AstriCon, there was a strong desire for the ability to completely + bypass dialplan when using ARI. This is possible through the automatic + creation of a context and a couple of extensions whenever an application + is started. + + For example, if you have an application named 'ari-example', a context + named 'stasis-ari-example' will be automatically created whenever this + application is started as long as one does not already exist. Two + extensions (a match-all extension for Stasis and a 'h' extension) are + created within this context. Any endpoint that registers to Asterisk + within this context will send all calls to the corresponding Stasis + application. When the application is destroyed, the context is removed. + + ASTERISK-28104 #close + + Change-Id: Ie35bd93075e05b05e3ae129a83c9426931b7ebac + +2019-02-04 07:09 +0000 [70fa6e6955] George Joseph + + * bundled-jansson: On OpenSuse Leap libjansson.a was placed in lib64 + + On OpenSuse Leap, libjansson.a is installed in + third-party/jansson/dest/lib64 instead of lib (which is where + the top-level makeopts looks). This causes a link failure. + + * Updated jansson/Makefile to add an explicit --libdir to force + the installation to third-party/jansson/dest/lib. + + ASTERISK-28271 + Reported by: David Wilcox + + Change-Id: Ibf8af75e5da13562105fcc39ed898c6ef0b5a5f3 + +2019-01-15 17:20 +0000 [9c3b4dcf80] Kevin Harwell + + * pjsip/config_global: regcontext context not created + + The context specified by 'regcontext' was not being created, so when Asterisk + attempted to later dynamically add an extension it would fail. This patch now + creates the context if a 'regcontext' is specified. + + ASTERISK-28238 + + Change-Id: I0f36cf4ab0a93ff4b1cc5548d617ecfd45e09265 + +2019-01-22 09:02 +0000 [603143bd5a] George Joseph + + * media_index.c: Refactored so it doesn't cache the index + + Testing revealed that the cache added no benefit but that it could + consume excessive memory. + + Two new index related functions were created: + ast_sounds_get_index_for_file() and ast_media_index_update_for_file() + which restrict index updating to specific sound files. + + The original ast_sounds_get_index() and ast_media_index_update() + calls are still available but since they no longer cache the results + internally, developers should re-use an index they may already have + instead of calling ast_sounds_get_index() repeatedly. If information + for only a single file is needed, ast_sounds_get_index_for_file() + should be called instead of ast_sounds_get_index(). + + The media_index directory scan code was elimininated in favor of + using the existing ast_file_read_dirs() function. + + Since there's no more cache, ast_sounds_index_init now only + registers the sounds cli commands instead of generating the + initial index and subscribing to stasis format register/unregister + messages. + + "sounds" is no longer a valid target for the "module reload" + command. + + Both the sounds cli commands and the sounds ari resources were + refactored to only call ast_sounds_get_index() once per invocation + and to use ast_sounds_get_index_for_file() when a specific sound + file is requested. + + Change-Id: I1cef327ba1b0648d85d218b70ce469ad07f4aa8d + +2019-01-25 12:27 +0000 [f6452f9656] Kevin Harwell + + * codecs.conf.sample: update codec opus docs + + The option value "sdp" for some of the settings was removed a while back, + however the sample conf was not updated. + + This patch removes any wording with regards to the old "sdp" option value, + and adjusts the defaults to what they are now. + + ASTERISK-28263 + + Change-Id: I41bfa44e9f69446bcc5c8fd92e3675c676fdc445 + +2019-01-22 09:24 +0000 [c1da2e94a3] eyalhasson + + * format_g726: add support for seeking + + Added support for the seek function in format_g726 + so playback can start from anywhere. + Before the fix, playback of g726 files + always started from the beginning. + + ASTERISK-28246 + + Change-Id: I626235bc4642df1479050d3d06828412603a9b40 + +2019-01-23 07:59 +0000 [d3a6714158] Jean Aunis + + * build : Fix cross-compilation errors + + Bundled pjproject and jansson must be configured with the host and build + parameters provided to the configure script. + Autotools do not permit to check for the existence of local header files, so + the control of hrirs.h must not be done when cross-compiling. + + ASTERISK-28250 + + Change-Id: If0a76e52a87d4ab82b7d4c72d27d8759ca931880 + +2019-01-23 04:45 +0000 [907d71b551] Jeremy Lainé + + * res_http_websocket: ensure control frames do not interfere with data + + Control frames (PING / PONG / CLOSE) can be received in the middle of a + fragmented message. In order to ensure they do not interfere with the + reassembly buffer, we exit early and do not return the payload to the + caller. + + ASTERISK-28257 #close + + Change-Id: Ia5367144fe08ac6141bba3309517a48ec7f013bc + +2018-12-16 06:43 +0000 [f6cf837aed] Xiemin Chen + + * bridge_softmix: Use MSID:LABEL metadata as the cloned stream's appendix + + To avoid the stream name collide if there're more than one video track + in one client. If client has multi video tracks, the name of ast_stream + which represents each video track may be the same. Use the MSID:LABEL + here because it's identifiable. + + ASTERISK-28196 #close + Reported-by: xiemchen + + Change-Id: Ib62b2886e8d3a30e481d94616b0ceaeab68a870b + +2019-01-22 15:03 +0000 [735bd4d185] Gerald Schnabel + + * manager_channels: Fix throwing of HangupHandler manager events + + The type value extracted from stasis message data in channel_hangup_handler_cb + isn't compared against the valid values "run", "pop" and "push". Thus the + manager events HangupHandlerPush, HangupHandlerPop and HangupHandlerRun are + never thrown. + + This regression was introduced by ASTERISK_21462. + + ASTERISK-28252 + + Change-Id: I9956e35e18da1873113644df1ddc3c7cd37bf524 + +2019-01-19 15:55 +0000 [05b79d16ab] Chris-Savinovich + + * Test_cel: Fails when DONT_OPTIMIZE is off + + A bug in GCC causes TEST_CEL to return failure under the following + conditions: + 1. TEST_FRAMEWORK on + 2. DONT_OPTIMIZE off + 3. Fedora and Ubuntu + 4. GCC 8.2.1 + 5. Test name: test_cel_dial_pickup + 6. There must exist a certain combination of multithreading. + The bug affects arithmetic calculations when the optimization level + is bigger than O1 and the -fpartial-inline flag is on. Provided these + conditions, function ast_str_to_lower() fails to convert to lower case + due to said function being of type force_inline. The solution is to + remove the "force_inline" type declaration from function ast_str_to_lower() + + Change-Id: Ied32e0071f12ed9d5f3b4cdd878b2532a1c769d7 + +2018-12-10 07:20 +0000 [dbef559e0b] George Joseph + + * app_voicemail: Add Mailbox Aliases + + You can now define an "aliases" context in voicemail.conf + whose entries point to actual mailboxes. These can be used anywhere + the mailbox is specified. + + Example: + [general] + aliasescontext = myaliases + + [default] + 1234 = yadayada + + [myaliases] + 4321@devices = 1234@default + + Now you can use 4321@devices to refer to the 1234@default mailbox. + + This can be useful to provide channel drivers with constant + mailbox specifications such as @devices leaving + app_voicemail to control exactly which mailbox the alias points to. + Now, only voicemail has to be reloaded to make changes instead of + individual channel drivers which are usually more expensive to + reload. + + Change-Id: I395b9205c91523a334fe971be0d1de4522067b04 + +2019-01-22 12:07 +0000 [f1fb249132] Kevin Harwell + + * res_pjsip_registrar: mitigate blocked threads on reliable transport shutdown + + When a reliable transport is shutdown it's possible for the pjsip registrar + resource shutdown handler to get called multiple times. If this happens and one + of the threads is taking "too long" (slow database call for instance) then the + others get blocked waiting to delete. + + Since it only takes one to delete the contact then the other threads should be + able to continue on if one of the threads is currently "deleting". This patch + makes it so now when a thread enters the shutdown handler it checks to see if a + thread is currently already "deleting". If so, then the thread does not attempt + to get the lock, and instead continues on thus avoiding the blockage. + + ASTERISK-28213 #close + + Change-Id: I7563ca596312b1dff4f3ab41483e89fe2862328a + +2019-01-22 09:02 +0000 [9c11399be3] George Joseph + + * pjproject_bundled: Add patch for double free issue in timer heap + + Fixed #2172: Avoid double reference counter decrements in + timer in the scenario of race condition between + pj_timer_heap_cancel() and pj_timer_heap_poll(). + + Change-Id: If000e9438c83ac5084b678eb811e902c035bd2d8 + +2019-01-18 16:11 +0000 [fb6e0df173] Sean Bright + + * pjsip_transport_management: Shutdown transport immediately on disconnect + + The transport management code that checks for idle connections keeps a + reference to PJSIP's transport for IDLE_TIMEOUT milliseconds (32000 by + default). Because of this, if the transport is closed before this + timeout, the idle checking code will keep the transport from actually + being shutdown until the timeout expires. + + Rather than passing the AO2 object to the scheduler task, we just pass + its key and look it up when it is time to potentially close the idle + connection. The other transport management code handles cleaning up + everything else for us. + + Additionally, because we use the address of the transport when + generating its name, we concatenate an incrementing ID to the end of the + name to guarantee uniqueness. + + Related to ASTERISK~28231 + + Change-Id: I02ee9f4073b6abca9169d30c47aa69b5e8ae9afb + +2019-01-20 12:15 +0000 [6506c5b1d4] Valentin Vidic + + * channel.c: Fix segfault with Monitor(wav,file,i) + + If the Monitor is started with the i option the read_stream will be + NULL. One code path in channel.c checks if write_stream is set but than + uses read_stream instead causing a segfault. + + ASTERISK-28249 + + Change-Id: I1bae9126537be54895c7fea2d08dd9488d8cc525 + +2019-01-10 13:34 +0000 [fcd07c34fb] Joshua C. Colp + + * stasis / manager / ari: Better filter messages. + + Previously both AMI and ARI used a default route on + their stasis message router to handle some of the + messages for publishing out their respective + connection. This caused messages to be given to + their subscription that could not be formatted + into AMI or JSON. + + This change adds an API call to the stasis message + router which allows a default route to be set as well + as formatters that the default route is expecting. + This allows both AMI and ARI to specify that their + default route only wants messages of their given + formatter. By doing so stasis can more intelligently + filter at publishing time so that they do not receive + messages which will not be turned into AMI or JSON. + + ASTERISK-28244 + + Change-Id: I65272819a53ce99f869181d1d370da559a7d1703 + +2019-01-17 09:56 +0000 [011e46d5a6] Sean Bright + + * sched: Make sched_settime() return void because it cannot fail + + Change-Id: I66b8b2b2778f186919d73ae9bf592104b8fb1cd5 + +2019-01-08 01:38 +0000 [21a1feece2] Jeremy Lainé + + * res_http_websocket: respond to CLOSE opcode + + This ensures that Asterisk responds properly to frames received from a + client with opcode 8 (CLOSE) by echoing back the status code in its own + CLOSE frame. + + Handling of the CLOSE opcode is moved up with the rest of the opcodes so + that unmasking gets applied. The payload is no longer returned to the + caller, but neither ARI nor the chan_sip nor pjsip made use of the + payload, which is a good thing since it was masked. + + ASTERISK-28231 #close + + Change-Id: Icb1b60205fc77ee970ddc91d1f545671781344cf + +2019-01-04 17:14 +0000 [44a862fb57] Sean Bright + + * res_pjsip_transport_websocket: Don't assert on 0 length payloads + + When --enable-dev-mode is used, pjsip_tpmgr_receive_packet() will assert + if passed a payload length of 0, so treat empty frames as if we didn't + receive them. + + Change-Id: I9c5fdccd89cc8d2f3ed7e3ee405ef0fc78178f48 + +2019-01-07 12:04 +0000 [4b24da607e] Mohit Dhiman + + * stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure. + + During Bridging of two channels if masquerade operation is performed on a + channel (clone channel) which was created with endpoint details + (ast_channel_alloc_with_endpoint()) and the original channel which is created + without endpoint details (ast_channel_alloc()) then both the channels must + exchange their endpoint details or else after masquerade when clone channel + is being destroyed the endpoint cleanup callbacks will be destroyed too and + after call completion unique_id of original channel will still be there in + ast_endpoint structure's channel_ids container. + + ASTERISK-28197 + + Change-Id: Ied0451f378a3f2a36acc8c0984959a69895efa17 + +2019-01-05 11:14 +0000 [d2c182b6ab] Diederik de Groot + + * RAII: Change order or variables in clang version + + This prevents use-after-scope issues when unwinding the stack, + which happens in reverse order. The varname variable needs to + remain alive for the destruction to be able to access it. + Issue was found using clang + address-sanitizer. + + ASTERISK-28232 #close + + Change-Id: I00811c34ae910836a5fb6d22304528aef92624db + +2018-12-18 13:47 +0000 [7f22c9f4b7] Alexei Gradinari + + * res_pjsip: add option to enable ContactStatus event when contact is updated + + The commit I2f97ebfa79969a36a97bb7b9afd5b6268cf1a07d removed sending out + the ContactStatus AMI event when a contact is updated. + Thist change broke things which rely on old behavior. + + This patch adds a new PJSIP global configuration option + 'send_contact_status_on_update_registration' to be able to preserve old + ContactStatus behavior. + By default new behavior, i.e. the ContactStatus event will not be sent when a + device refreshes its registration. + + Change-Id: I706adf7584e7077eb6bde6d9799ca408bc82ce46 + +2019-01-07 08:06 +0000 [c6271155fb] Joshua Colp + + * res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled. + + For video streams it was possible for the abs-send-time information + to be placed into RTP streams even if not negotiated. Depending on + the endpoint in use this could cause video to not flow. + + We now only enable abs-send-time for negotiation if WebRTC is enabled. + + ASTERISK-28230 + + Change-Id: I0eb682302f8da3a4ea3c42e839208d55f825ed0c + +2019-01-04 09:57 +0000 [c0e57e458b] Alexei Gradinari + + * RTP: reset DTMF last seqno/timestamp on RTP renegotiation + + The remote side may start a new stream when renegotiating RTP. + Need to reset the DTMF last sequence number and the timestamp + of the last END packet on RTP renegotiation. + + If the new time stamp is lower then the timestamp of the last DTMF END packet + the asterisk drops all DTMF frames as out of order. + + This bug was caught using Cisco ip-phone SPA5XX and codec g722. + On SIP session update the SPA50X resets stream and a new timestamp is twice + smaller then the previous. + + ASTERISK-28162 #close + + Change-Id: Ic72b4497e74d801b27a635559c1cf29c16c95254 + +2019-01-02 11:44 +0000 [92298434bd] Bryan Boatright + + * app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail + + If a voicemail is marked "urgent" then the VM_MESSAGEFILE channel variable is + not updated correctly since urgent messages are in a different directory. The + fix is to update the channel variable when the path to the urgent message is + created. + + ASTERISK-28225 + + Change-Id: I8efbace06e6122ea0793f7bdb073d4378e8274ca + +2019-01-02 11:33 +0000 [2d9482695d] Joshua Colp + + * app_queue: Fix crash when using 'b' option on non-ringall queue. + + When using the 'b' option to Queue with a queue that was not configured + for ring all a crash would occur as the wrong pointer would be used. + + ASTERISK-28218 + + Change-Id: If1390f64e321047dff24fd2410c95dde74904980 + +2018-12-19 13:02 +0000 [f196078705] Richard Mudgett + + * stasic.c: Fix printf format type mismatches with arguments. + + An int64_t is not likely the same size as a long. + + * Changed the int64_t values in the statistics structs to longs so casting + is not necessary when generating the formatted CLI output. The offending + members did not need to be int64_t anyway as they were only set by an int + type variable which was already truncating bits. + + * Reordered the statistics structs to reduce potential padding bytes. + + Change-Id: Ic090a070e9dc4ca650ebdb9c01ed50a581289962 + +2018-12-26 12:30 +0000 [44a7faca21] Corey Farrell + + * stasis: Fix ABI between DEVMODE and non-DEVMODE. + + Create compatibility stubs for maximum ABI compatibility. + + ASTERISK-28212 #close + + Change-Id: I872c04842ab6b61e9dd6d37e4166bc619aa20626 + +2018-12-26 10:24 +0000 [ff2ed4eeee] George Joseph + + * Revert "stasis_cache: Stop caching stasis subscription change messages" + + This commit caused issues with polling when combined with + the revert commit "Revert "app_voicemail: Remove need to subscribe to stasis" + + This reverts commit 17d6d9e1e7d0db04ebd8d2e0cd9e087ec5462e2f. + + ASTERISK-28222 + Reported by: abelbeck + + Change-Id: Ib6a16cbe2c0b74c76c64264f525ab647959c1483 + +2018-12-24 11:42 +0000 [3efe5061d5] George Joseph + + * ast_coredumper: Refactor the pid determination process + + In order to get a dump of the running process, we need to find the + pid of the main asterisk process. This can be tricky if there are + also instances of "asterisk -r" running or if an alternate location + for asterisk.conf was specified on the command line with the -C + option that also specified an alternation location for the pid file. + + So now... + + 1. We find the asterisk executable with "which" or the --asterisk-bin + command line option. + 2. If there's only 1 process with an executable path that matches, + we use that pid. If not... + 3. We try " -rx 'core show settings'" and parse the + output to find the pidfile, then read that for the pid. If that + didn't work... + 4. We get a list of all the pids matching and look + in /proc//cmdline for a -C argument and retry the "core show + settings" using the same -C option. We can't parse the output + of "ps" to get the -C path because it may contain spaces. The + contents of /proc//cmdline are delimited by NULLs. For BSDs + we may have to mount /proc first. :( + + ASTERISK-28221 + Reported by: Andrew Nagy + + Change-Id: I8aa1f3f912f949df2b5348908803c636bde1d57c + +2018-12-19 12:39 +0000 [59717b5e85] Richard Mudgett + + * backtrace.c: Fix casting pointer to/from integral type. + + The backtrace library bfd.h include file does not get the sizes of + pointers and ints right on some platforms. On my old test box the size + of bfd_vma is 8 while the size of a pointer is 4. gcc on the box + complains of the integer casting to/from pointers size mismatch. + + * uintptr_t to the rescue by doing an appropriate two stage cast. + + Change-Id: Icb2621583f50c8728de08a3c824d95fe53cc45d0 + +2018-12-18 10:33 +0000 [aebb822d1f] George Joseph + + * app_voicemail: Don't delete mailbox state unless mailbox is deleted + + The free_user function was automatically deleting the stasis mailbox + state but this only makes sense when the mailbox is actually + deleted, not just the structure freed. This was causing issues + where leave_voicemail would publish the mwi message to stasis and + delete the state before the message could be processed by + res_pjsip_mwi. + + * Removed the delete of state from free_user(). + + * Created a new free_user_final() function that both frees the data + structure and deletes the state. This function is only called + during module load/unload where it's appropriate to delete the + state. + + ASTERISK-28215 + + Change-Id: I305e8b3c930e9ac41d901e5dc8a58fd7904d98dd + +2018-12-14 11:52 +0000 [970805180e] Sean Bright + + * res_rtp_asterisk: Remove some unused structure fields. + + All of the fields that were removed were no longer referenced except for + 'lastrxts' and 'rxseqno' which were only ever written to. + + Change-Id: I5a5d31eb33e97663843698f58d0d97f22a76627c + +2018-12-13 15:56 +0000 [f60afac587] Sean Bright + + * res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set + + The profile-iop octet (the 2nd) of profile-level-id can be zero + according to RFC 6184 Section 8.1. So we ignore its value when deciding + to include profile-level-id in the outgoing SDP. + + ASTERISK-27959 #close + Reported by: David Kuehling + + Change-Id: Id28cd916a3d7748058fe9609b585d07d9e243f73 + +2018-12-11 14:49 +0000 [640aac768b] Sean Bright + + * bridge_builtin_features.c: Set auto(mix)mon variables on both channels + + This is how features behaved up through Asterisk 11, but was changed + when the new bridging framework was implemented in Asterisk 12. + + Reported by rrittgarn in #asterisk. + + Change-Id: I72cf86223947a8118c75f46e2c603dbc11e3125b + +2018-12-07 14:22 +0000 [2610379605] Alexei Gradinari + + * confbridge: announce to the marked users when they join an empty conference + + Currently the file sound_only_person is not played when a marked + user (with announce_only_user=yes) joins an empty conference. + + This patch fixes it. + + ASTERISK-28201 #close + + Change-Id: I85b67687e6b220939c3af8091d83a70a7b174cf4 + +2018-11-30 05:40 +0000 [68ec7d93e8] Joshua C. Colp + + * stasis: Add statistics gathering in developer mode. + + This change adds statistics gathering to Stasis topics, + subscriptions, and message types. These can be viewed using + CLI commands and provide insight into how Stasis is used + and how long certain operations take to execute. + + These are only available when Asterisk is compiled in + developer mode and do not have any impact under normal + operation. + + ASTERISK-28117 + + Change-Id: I94411b53767f89ee01714daaecf0c2f1666e863f + +2018-12-11 08:54 +0000 [9febdba05b] Sean Bright + + * Use non-blocking socket() and pipe() wrappers + + Change-Id: I050ceffe5a133d5add2dab46687209813d58f597 + +2018-12-11 09:06 +0000 [16ae8330d2] Sean Bright + + * utils: Don't set or clear flags that don't need setting or clearing + + Change-Id: I0e7fb507ac09b15e45e1ff8501ecfca67afa5217 + +2018-12-11 06:55 +0000 [9c9519796b] Sean Bright + + * build: Update config.guess and config.sub + + Pulled from the authoritative respository at: + + https://git.savannah.gnu.org/cgit/config.git/tree/ + + Change-Id: I748708ce24d4d47ff1f395075d0b08d3da3355e0 + +2018-12-11 08:28 +0000 [df0b59564e] George Joseph + + * Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit" + + This reverts commit 331c906c4811df17612efa5c31e19df7186b1c81. + + Pending resolution of ASTERISK_28200 + + Change-Id: Ie7172707b603c1da3f200613bd4473335af75128 + +2018-12-06 11:23 +0000 [59cf552dd3] Sebastian Damm + + * res/res_ari: Add additional hangup reasons + + The ARI DELETE /channels command takes a "reason" parameter + Previously, there were only five reasons implemented + This patch adds more reasons to choose from for more + complex setups + + ASTERISK-28198 #close + + Change-Id: I85996f1076c9946d65c778413f040a845a90fecc + +2018-12-07 06:57 +0000 [8a18fb81c1] Sean Bright + + * utils: Wrap socket() and pipe() to reduce syscalls + + Some platforms provide an implementation of socket() and pipe2() that allow the + caller to specify that the resulting file descriptors should be non-blocking. + + Using these allows us to potentially elide 3 calls into 1 by avoiding extraneous + calls to fcntl() to set the O_NONBLOCK flag afterwards. + + In passing, change ast_alertpipe_init() to use pipe2() directly instead of the + wrapper if it is available. + + Change-Id: I3ebe654fb549587537161506c6c950f4ab298bb0 + +2018-11-29 09:53 +0000 [79899db740] George Joseph + + * stasis: Allow filtering by formatter + + A subscriber can now indicate that it only wants messages + that have formatters of a specific type. For instance, + manager can indicate that it only wants messages that have a + "to_ami" formatter. You can combine this with the existing + filter for message type to get only messages with specific + formatters or messages of specific types. + + ASTERISK-28186 + + Change-Id: Ifdb7a222a73b6b56c6bb9e4ee93dc8a394a5494c + +2018-12-04 18:00 +0000 [6071ad77f5] Giuseppe Sucameli + + * chan_sip: Fix leak using contact ACL + + Free old peer's contactacl before overwrite it within build_peer. + + ASTERISK-28194 + + Change-Id: Ie580db6494e50cee0e2a44b38e568e34116ff54c + +2018-12-05 15:28 +0000 [1657508ddd] David M. Lee + + * Removing registrar_expire from basic-pbx config + + The module has been removed, so it shouldn't be in the default config any more. + + Change-Id: Ie7e09f00f9c9a885574e29478250de4c2cefd9f1 + +2018-12-05 09:37 +0000 [a6c2662404] George Joseph + + * CI: Various updates to buildAsterisk.sh + + * Added ---no-configure, --no-menuselect, --no-make and --no-alembic + options that prevent those actions from being performed. Useful + for testing and re-running portions of the build after fixing + earlier failures. + + * Added "set -e" to abort the script on command failure. + Not sure why this wasn't there in the first place. + + * Fixed a few echos that were redirecting to stderr when they shouldn't + have been. + + * Catch more alembic failures by actually trying to generate the SQL. + + Change-Id: I9f395fa4e9254be7299e7c1014f1a13db78faffb + +2018-11-30 14:00 +0000 [60e548ffa5] Chris-Savinovich + + * test_websocket_client.c: Disable websocket_client_create_and_connect test. + + This test was occasionally failing, with: + + WARNING[5812]: http.c:1939 httpd_helper_thread: Failed to set + TCP_NODELAY on HTTP connection: Bad file descriptor + ERROR[5812]: iostream.c:91 ast_iostream_nonblock: Failed to get + fcntl() flags for file descriptor: Bad file descriptor + ERROR[5812]: iostream.c:569 ast_iostream_close: close() failed: Bad + file descriptor + + Disabled for now by making the test explicit only. + + Change-Id: I778f6cbb6104c6b4e89737a2eaf1a9540888d351 + +2018-11-28 01:14 +0000 [5de36abd5a] Pirmin Walthert + + * pjproject_bundled: check whether UPDATE is supported on outgoing calls + + In ASTERISK-27095 an issue had been fixed because of which chan_pjsip was not + trying to send UPDATE messages when connected_line_method was set to invite. + However this only solved the issue for incoming INVITES. For outgoing INVITES + (important when transferring calls) the options variable needs to be updated + at a different place. + + ASTERISK-28182 #close + Reported-by: nappsoft + + Change-Id: I76cc06da4ca76ddd6dce814a8b97cc66b98aaf29 + +2018-11-11 10:29 +0000 [1b6df87816] Sungtae Kim + + * res_pjsip: Patch for res_pjsip_* module load/reload crash + + The session_supplements for the pjsip makes crashes when the module + load/unload. + + ASTERISK-28157 + + Change-Id: I5b82be3a75d702cf1933d8d1417f44aa10ad1029 + +2018-12-04 00:03 +0000 Asterisk Development Team + + * asterisk 16.1.0-rc1 Released. + +2018-12-03 17:45 +0000 [12a30c71d8] Kevin Harwell + + * pjsip_add_use_callerid_contact: fixed alembic script + + Change-Id: I413f1583c797fb79651786cd8d0b003599f8ed10 + +2018-12-03 16:41 +0000 [27806fd04d] Sean Bright + + * core: Add some documentation to the malloc_trim code + + This adds documentation to handle_cli_malloc_trim() indicating how it + can be useful when debugging OOM conditions. + + Change-Id: I1936185e78035bf123cd5e097b793a55eeebdc78 + +2018-12-03 14:01 +0000 [1f09c61804] Chris-Savinovich + + * core: Merge malloc_trim patch + + We've had multiple opportunities where Richard Mudgett's + malloc_trim patch has been useful. Let's get it + pushed up to gerrit and merged. + + Since malloc_trim is only available in libc, an entry is + added to configure.ac to create a definition for + HAVE_MALLOC_TRIM. + + Change-Id: Ia38308c550149d9d6eae4ca414a649957de9700c + +2018-11-29 13:26 +0000 [a2a8a41db3] George Joseph + + * Revert "app_voicemail: Remove need to subscribe to stasis" + + This reverts commit 29115e23848cceee0e2763bc70e87cb311919cdd. + + That commit closed a long standing hole which allowed subscriptions + to mailboxes that weren't configured in voicemail.conf. This + caused an issue with FreePBX which depdended on that behavior. + The commit is being reverted until FreePBX can handle the new + behavior. + + ASTERISK-28151 + Reported by: Ronald Raikes + + Change-Id: I57b7b85e75d7dd97c742b5c69d718a0f61260c15 + +2018-10-22 07:47 +0000 [aa004295f9] lvl + + * app_queue: Revert broken queue channel reference patch + + Revert commit 6409e7b11a2310196a9978b30a6b79e2760be592, and add + NULL checks for all app_queue event handling code. + + Related issues: ASTERISK~25185, ASTERISK~27006, ASTERISK~25844 + + ASTERISK-28125 + + Change-Id: I37334ea184ebb56e54471496b82937d4927815a0 + +2018-11-26 16:18 +0000 [a5e77e9c37] George Joseph + + * test_cel: Plug a few ref leaks + + These are only a few of the leaks. The large number of macros + and return paths in this file would make a weeks worth of work + to plug them all. + + Change-Id: Ie2369fa944023d44767871c5c30974cb077ffb56 + +2018-11-26 06:09 +0000 [606304eb54] Corey Farrell + + * jansson: Upgrade to 2.12. + + This brings in jansson-2.12, removes all patches that were merged + upstream. README is created in third-party/jansson/patches to explain + how to add patches but also because the patches folder must exist for + the build process to succeed. + + Change-Id: If0f2d541c50997690660c21fb7b03d625a5cdadd + +2018-11-23 09:40 +0000 [331c906c48] Alexei Gradinari + + * RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit + + The marker bit set on the voice packet indicates the start + of a new stream and a new time stamp. + Need to reset the DTMF last sequence number and the timestamp + of the last END packet. + + If the new time stamp is lower then the timestamp of the last DTMF END packet + the asterisk drops all DTMF frames as out of order. + + This bug was caught using Cisco ip-phone SPA50X and codec g722. + On SIP session update the SPA50X resets stream indicating it with market bit + and a new timestamp is twice smaller then the previous. + + ASTERISK-28162 #close + + Change-Id: If9c5742158fa836ad549713a9814d46a5d2b1620 + +2018-11-19 14:10 +0000 [ed7a5664b6] Corey Farrell + + * astobj2: Eliminate usage of legacy ao2_container_alloc routine. + + Replace usage of ao2_container_alloc with ao2_container_alloc_hash or + ao2_container_alloc_list. + + ao2_container_alloc is now restricted to modules only and is being + removed from Asterisk 17. + + Change-Id: I0907d78bc66efc775672df37c8faad00f2f6c088 + +2018-11-14 05:02 +0000 [0d2b39065f] Corey Farrell + + * astobj2: Create function to copy weak proxied objects from container. + + Create ao2_container_dup_weakproxy_objs to perform a similar function to + ao2_container_dup. This function expects the source container to have + weakproxy objects, inserts the associated non-weak objects into the + destination container. Orphaned weakproxy objects are ignored. + + Create test for this new function and for ao2_weakproxy_find. + + Change-Id: I898387f058057e08696fe9070f8cd94ef3a27482 + +2018-11-16 14:45 +0000 [72e532136c] Michael Walton (license 6502) + + * func_strings: HASHKEY - negative array index can cause corruption + + This patch makes it so only matching non-empty key names, and keys created by + the HASH function are eligible for inclusion in the comma separated string. It + also fixes a bug where it was possible to write to a negative index if the + result buffer was empty. + + ASTERISK-28159 + patches: + ASTERISK-28159.diff submitted by Michael Walton (license 6502) + + Change-Id: I6e57fe7307dfd856271753aed5ba64c59b511487 + +2018-11-19 11:59 +0000 [729967e99c] George Joseph + + * CI: Get job timeouts from environment + + The job timeouts were hard coded in the jenkinsfiles which + means changes had to go through gerrit. Now they are taken + from the following environment variables (and their defaults) that + can be set in Jenkins configuration... + + TIMEOUT_GATES = "60 MINUTES" + TIMEOUT_DAILIES = "3 HOURS" + TIMEOUT_REF_DEBUG = "24 HOURS" + TIMEOUT_UNITTESTS = "30 MINUTES" + + Change-Id: I673a551c1780bf665a3bc160b245da574aa4bbab + +2018-11-18 17:53 +0000 [d05c219aad] Joshua C. Colp + + * stasis: Remove stringfields and lock from change message. + + When a subscribe or unsubscribe occurs a message is published + containing this information. This change makes it so that the + message no longer uses stringfields or a lock, as both are not + really needed for the message. + + Change-Id: I3f4831931d79f94fd979baf48048738df5dc1632 + +2018-11-19 07:00 +0000 [f9b9bdd0b0] Corey Farrell + + * app_queue: Cleanup queue_ref / queue_unref routines. + + This replaces the inline functions with macros. This removes the need + to directly use __ao2_ref, opts instead for standard ao2_bump and + ao2_cleanup macros. + + Change-Id: If4e04e9bab2e3c883188437cb9f487b3e498a21b + +2018-11-08 09:53 +0000 [41eab5b3b8] George Joseph + + * backtrace: Refactor ast_bt_get_symbols so it doesn't crash + + We've been seeing crashes in libbfd when we attempt to generate + a stack trace from multiple threads. It turns out that libbfd + is NOT thread-safe. It can cache the bfd structure and give it to + multiple threads without protecting itself. To get around this, + we've added a global mutex around the bfd functions and also have + refactored the use of those functions to be more efficient and + to provide more information about inlined functions. + + Also added a few more tests to test_pbx.c. One just calls + ast_assert() and the other calls ast_log_backtrace(). Neither are + run by default. + + WARNING: This change necessitated changing the return value of + ast_bt_get_symbols() from an array of strings to a VECTOR of + strings. However, the use of this function outside Asterisk is not + likely. + + ASTERISK-28140 + + Change-Id: I79d02862ddaa2423a0809caa4b3b85c128131621 + +2018-11-16 20:33 +0000 [cb83350230] Sungtae Kim + + * res/res_ari: Fix null endpoint handle + + The res_ari(POST /channels/create handler) deos not check the endpoint + parameter length. And it causes core + dump. + Fixed it to check the parameter length. Also fixed memory leak. + + ASTERISK-28169 + + Change-Id: Ibf10a9eb8a2e3a9ee1e13fbe748b2ecf955c3993 + +2018-11-13 09:28 +0000 [e6005f1227] Alexei Gradinari + + * pjsip: New function PJSIP_PARSE_URI to parse URI and return part of URI + + New dialplan function PJSIP_PARSE_URI added to parse an URI and return + a specified part of the URI. + + This is useful when need to get part of the URI instead of cutting it + using a CUT function. + + For example to get 'user' part of Remote URI + ${PJSIP_PARSE_URI(${CHANNEL(pjsip,remote_uri)},user)} + + ASTERISK-28144 #close + + Change-Id: I5d828fb87f6803b6c1152bb7b44835f027bb9d5a + +2018-09-23 15:50 +0000 [8d436a95e7] Joshua Colp + + * stasis: Add internal filtering of messages. + + This change adds the ability for subscriptions to indicate + which message types they are interested in accepting. By + doing so the filtering is done before being dispatched + to the subscriber, reducing the amount of work that has + to be done. + + This is optional and if a subscriber does not add + message types they wish to accept and set the subscription + to selective filtering the previous behavior is preserved + and they receive all messages. + + There is also the ability to explicitly force the reception + of all messages for cases such as AMI or ARI where a large + number of messages are expected that are then generically + converted into a different format. + + ASTERISK-28103 + + Change-Id: I99bee23895baa0a117985d51683f7963b77aa190 + +2018-11-18 10:38 +0000 [dd0a3c0bba] George Joseph + + * CI: Add tmpfs to all jenkinsfiles + + Change-Id: Ida29d70d48d5f39aabf0b25c66b51f79324a8cba + +2018-11-17 15:40 +0000 [77e9c877b5] George Joseph + + * CI: Mount a tmpfs on /tmp for testsuite docker containers + + Change-Id: I0566d81b0852f22066cd76d58eae5f1fda5602aa + (cherry picked from commit 73efe86436427e5f43c532e5d42505ab4ec104d9) + +2018-11-17 13:07 +0000 [0552bc2a94] George Joseph + + * CI: Pass work directory to runTestsuite + + The testsuite can now use a user-specified work directory for + all it's temp files. This allows the docker containers to use + a tmpfs backed directory for the temp files instead of it's + own write-layer image. + + * runTestsuite.sh now accepts a --work-dir command line argument + that gets exported as AST_WORK_DIR before running the testsuite. + + * gates.jenkinsfile now specifies --work-dir to be + /astroot. + + Since the Asterisk CI docker hosts now mount /srv/jenkins/workspace + on a tmpfs, asterisk should be compiled and the testsuite run all in + memory. + + Change-Id: If5ee905a15821296c355bb84cda38950ad8edc45 + (cherry picked from commit a335f4c9adb0a00211345634f61917bdf5b412c2) + +2018-11-15 11:41 +0000 [7ba8f32632] George Joseph + + * CI: Allow runUnittests to use 'expect' to run the tests + + There seems to be a race condition between starting the asterisk + daemon and attempting to use 'asterisk -r' that can cause the + control socket file to not be created. Since all of the Jenkins + slaves have 'expect' installed, the runUnittests script can use + it to start asterisk in the forground and issue the commands + interactively. This is much more reliable and it can also make + startup errors more visible since they'll be in the Jenkins console + output. + + If 'expect' isn't installed, the original daemon/asterisk -r + process is used. + + Also added a "core show settings" before running the tests + and added "notice,warning,error" to the console log. + + Change-Id: Idd656085f854afede813ac241b9e312b31358160 + +2018-11-12 12:23 +0000 [699dfa9401] Corey Farrell + + * taskprocessor: Prevent race creating new taskprocessor. + + Task processors are retrieved using a 'get or create' pattern. The + singleton container was unlocked between the get and create steps so + it's possible that two threads could create task processors with the + same name at the same time. + + Change-Id: Id64fae94a6a1e940ddf38fde622dcd4391635382 + +2018-11-16 06:20 +0000 [3bdf6ac918] Corey Farrell + + * pjproject-bundled: Use AST_DEVMODE for conditional compilation. + + We previously allowed resample and g711 codecs to be built when + TEST_FRAMEWORK was enabled. This could cause errors if the testsuite + was run without this option enabled. Switch the build system to allow + those codecs to be built when --enable-dev-mode is used. This removes a + chance for strange testsuite errors from use of an inadequate pjsua + binary. + + Change-Id: Iee8a3613cdb711fa7e7d217c5a775a575907ae22 + +2018-11-15 14:47 +0000 [2a76489eba] Corey Farrell + + * res_pjsip_caller_id: Use static pj_str_t for fromto header names. + + PJSIP assumes that these header names are not allocated, does not clone + the name strings when reusing headers. + + Block unload of res_pjsip_caller_id until shutdown to ensure static + memory stays valid. It was previously unsafe to unload while any + sessions are active. + + Change-Id: I190854dea943d6e441cf03733f8a0da661aea27f + +2018-10-24 07:38 +0000 [7b2282c890] Torrey Searle + + * res/res_pjsip_nat: Fix logic for REINVITES + + The presence of Record-Route in re-invites is optional, thus it is + important to make sure the dialog doesn't have a routset before + rewriting the contact header. + + ASTERISK-28129 #close + + Change-Id: Ic8ceb54ccfc93f7e315e476c514a2c777f2da7dc + +2018-11-15 05:33 +0000 [a36cd6960c] Corey Farrell + + * core: Fix handling of restart from remote console. + + We cannot use need_el_end and SIGURG when restarting. Instead we need + to run el_end within the SIGHUP restartnow handler. + + ASTERISK-28158 + + Change-Id: Ia852276363c81bdcf1aa29eb4558c5c2fa1218a0 + +2018-10-25 10:25 +0000 [009d67cd28] Jan Hoffmann (license 6986) + + * AST-2018-010: Fix length of buffer needed for SRV and NAPTR results + + When dn_expand was being called on SRV and NAPTR results, the + return value was being used to calculate the size of the buffer + needed to store the host names. Since dn_expand returns the + length of the COMPRESSED name the buffer could be too short + to hold the EXPANDED name. The expanded name is NULL terminated + so using strlen() is the correct way to determine the length + actually needed for the buffer. + + ASTERISK-28127 + Reported by: Jan Hoffmann + + patches: + patch.diff submitted by janhoffmann (license 6986) + + Change-Id: I4d35d6c431c6c6836cb61d37b1378cc47f0b414d + +2018-11-13 10:51 +0000 [89d97da8a4] Corey Farrell + + * test_res_pjsip_scheduler: Fix possible write after free in scheduler_policy. + + It's possible for a 4th task to be spawned before we cancel. This + results in a write to the already freed test_data1. Wait long enough to + verify success of the cancelation before freeing test_data1. + + Change-Id: I057e2fcbe97f8a175e50890be89c28c20490a20f + +2018-10-17 08:48 +0000 [df703c1853] Robert Cripps + + * bridge_native_rtp.c: Fail native bridge if no framing match. + + ASTERISK-28110 #close + + Change-Id: Ic64b8fc6a140a93fbdb2f97550a40d0ff334e607 + +2018-11-11 18:32 +0000 [05c79fdf06] Corey Farrell + + * taskprocessor: Do not use separate allocation for stats or name. + + Merge storage for the stats object and name string into the main + allocation for struct ast_taskprocessor. + + Change-Id: I74fe9a7f357f0e6d63152f163cf5eef6428218e1 + +2018-11-11 07:34 +0000 [3cde7e30ba] Corey Farrell + + * core: Ensure that el_end is always run when needed. + + * Ignore console=yes configuration option in remote console processes. + * Use new flag to tell consolethread to run el_end and exit when needed. + + ASTERISK-28158 + + Change-Id: I9e23b31d4211417ddc88c6bbfd83ea4c9f3e5438 + +2018-11-08 15:37 +0000 [1c008c6de5] Corey Farrell + + * jansson-bundled: Patch for off-nominal crash. + + pack_string crashed on non-NULL strings returned when s->has_error was + true if the string was the result of 's' format without '#', '%' or '+'. + + Change-Id: Ic125df691d81ba2cbc413e37bdae657b304d20d0 + +2018-11-02 06:38 +0000 [07a59b783e] Corey Farrell + + * pbx_config: Only the first [globals] section is seen. + + If multiple [globals] sections are used (for example via separate + included files), only the first one is processed. This can result in + lost global variables when using a modular extensions.conf. + + ASTERISK-28146 #close + + Change-Id: Iaac810c0a7c4d9b1bf8989fcc041cdb910ef08a0 + +2018-11-06 16:44 +0000 [9c9bc5acca] Chris-Savinovich + + * res_pjsip: Send a 503 response when overload state if reliable transport. + + When Asterisk's taskprocessors get overloaded we need to reduce the work + load. res_pjsip currently ignores new SIP requests and relies on SIP + retransmissions in the hope that the overload condition will clear soon + enough to handle the retransmitted SIP request. + This change adds the following code after ast_taskprocessor_alert_get() + has returned TRUE: + 1- identifies transport type. If non-udp then send a 503 response + 2- if transport type is udp/udp6 then ignore, as before. + + Change-Id: I1c230b40d43a254ea0f226b7acf9ee480a5d3836 + +2018-11-06 16:35 +0000 [03efafbd4d] Kevin Harwell + + * res_pjsip: formatting error in documentation + + The use of a '|' in the "global/debug" synopsis documentation caused the + generated html table on the wiki to add an extra column that included the + text after the pipe. + + This patch replaces the pipe with a comma. + + ASTERISK-28150 + + Change-Id: I3d79a6ca6d733d9cb290e779438114884b98a719 + +2018-11-05 12:44 +0000 [3e3f3bfb07] Alexei Gradinari + + * res_pjsip.c: Make taskprocessor scheduling algorithm pick the shortest queue + + The current round-robin method does not take the current taskprocessor + load into consideration when distributing requests. Using the least-size + method the request goes to the taskprocessor that is servicing the least + number of active tasks at the current time. + + Longer running tasks with the round-robin method can delay processing + tasks. + + * Change the algorithm from round-robin to least-size for picking the + PJSIP taskprocessor from the default serializer pool. + + Change-Id: I7b8d8cc2c2490494f579374b6af0a4868e3a37cd + +2018-11-05 08:30 +0000 [27897a850d] Joshua Colp + + * stasis: Clarify lifetime of topics. + + As mentioned in the comment I've added in the code there is no + ability to unsubscribe all subscribers from a topic and explicitly + destroy it. This is not currently a problem as we have two types of + topics: + + Long lived topics which exist for the lifetime of the system. + Ephemeral topics which feed a long lived topic. + + In the case of the ephemeral topics there is no subscriber which does + not have its lifetime managed by the same entity that has created + the topic. This ensures that when the topic is being unreferenced the + subscribers are also unsubscribed and destroyed, allowing the topic + to ultimately be destroyed as well. + + Change-Id: Ic5e244da7b16b1895ba1fc5ece481ebba5809c9a + +2018-10-09 07:44 +0000 [7f6ac5dc2f] Jasper Hafkenscheid + + * chan_sip: Attempt ast_do_pickup in handle_invite_replaces + + When a call pickup is performed using and invite with replaces header + the ast_do_pickup method is attempted and a PICKUP stasis message is sent. + + ASTERISK-28081 #close + Reported-by: Luit van Drongelen + + Change-Id: Ieb1442027a3ce6ae55faca47bc095e53972f947a + +2018-10-26 10:53 +0000 [a6d1723727] Pascal Cadotte Michaud + + * contrib/sip_to_pjsip: add a --quiet option to avoid prints + + Using the --quiet or -q option in conjonction with /dev/stdout as the output + file allow the output to be used as a valid configuration. + + Given a script that generates a valid sip.conf I can pipe the output of that + script into `sip_to_pjsip.py -q /dev/stdin /dev/stdout`. This allow me to use + that piped command in my pjsip.conf using the `exec` command. + + ASTERISK-28136 + + Change-Id: I7b0e2e90e2549f3f8e01dc96701f111b5874c88d + +2018-10-31 07:53 +0000 [9c5e75acb0] Joshua Colp + + * res_pjsip: Add XML documentation for "use_callerid_contact" + + ASTERISK-28087 + + Change-Id: I69d48813ec514f5ef06c6de994cba52630e0a3b4 + +2018-10-30 10:52 +0000 [719daf3299] Richard Mudgett + + * alembic: Fix use_callerid_contact option add script. + + ASTERISK-28087 + + Change-Id: I046d018015427d0916fab571b5a4f5367476f729 + +2018-10-12 16:46 +0000 [5cbe77cc46] Alexei Gradinari + + * pjsip: new endpoint's options to control Connected Line updates + + This patch adds new options 'trust_connected_line' and 'send_connected_line' + to the endpoint. + + The option 'trust_connected_line' is to control if connected line updates + are accepted from this endpoint. + + The option 'send_connected_line' is to control if connected line updates + can be sent to this endpoint. + + The default value is 'yes' for both options. + + Change-Id: I16af967815efd904597ec2f033337e4333d097cd + +2018-10-26 16:18 +0000 [fbee505611] Alexei Gradinari + + * res_pjsip_notify: improve realtime performance on CLI completion on the endpoint + + The module 'res_pjsip_notify' inefficiently makes a lot of DB requests + on CLI completion on the endpoint. + + For example if there are 10k endpoints the module makes 10k requests + of these 10k records. + + Even if a part of the endpoint entered + the module makes the same 10k requests and then filtered them by itself. + + This patch gathers endpoints container by prefix + and adds all gathered endpoints to completion at once. + + ASTERISK-28137 #close + + Change-Id: Ic20024912cc77bf4d3e476c4cd853293c52b254b + +2018-10-27 09:59 +0000 [6c2f9b730e] Pascal Cadotte Michaud + + * contrib/sip_to_pjsip: handle setvar in conversion + + Given a sip.conf with the following content: + + setvar FOO=1 + setvar BAR=42 + + I want my generated pjsip.conf to containt the following set_vars + + set_var FOO=1 + set_var BAR=42 + + in the matching endpoint section. + + Change-Id: I6c822401fda4133c3b44bf31e655b4eb939d4d26 + +2018-10-02 07:31 +0000 [3ba66b8a9d] Torrey Searle + + * res_pjsip_session: add new flag use_callerid_contact + + Add a new global flag to res_pjsip to allow the callerid to be used + as the username in the contact header. This allows chan_pjsip to have + the same behavour as chan_sip + + ASTERISK-28087 #close + + Change-Id: I9a720e058323f6862a91c62f8a8c1a4b5c087b95 + +2018-10-17 19:34 +0000 [fbb577577c] Richard Mudgett + + * logger.c: Fix default console logging when no logger.conf available. + + Default logging was not setup correctly when there was no logger.conf. + This resulted in many expected log messages not actually getting out to + the console. + + Change-Id: I542e61c03b2f630ff5327f9de5641d776c6fa70c + +2018-09-26 15:05 +0000 [190b3d7412] Alexei Gradinari + + * app_dial/queue/followme: 'I' options to block initial updates in both directions + + The 'I' option currently blocks initial CONNECTEDLINE or REDIRECTING updates + from the called parties to the caller. + + This patch also blocks updates in the other direction before call is + answered. + + ASTERISK-27980 + + Change-Id: I6ce9e151a2220ce9e95aa66666933cfb9e2a4a01 + +2018-10-22 14:31 +0000 [11427a9665] Richard Mudgett + + * modules.conf.sample: Update preload usage documentation. + + Change-Id: Id449d4435c38148b56ac4cfd61ae4d90ac66bb90 + +2018-10-16 07:02 +0000 [fec66b8f01] George Joseph + + * bridge_softmix: Add SDP "label" attribute to streams + + Adding the "label" attribute used for participant info correlation + was previously done in app_confbridge but it wasn't working + correctly because it didn't have knowledge about which video + streams belonged to which channel. Only bridge_softmix has that + data so now it's set when the bridge topology is changed. + + ASTERISK-28107 + + Change-Id: Ieddeca5799d710cad083af3fcc3e677fa2a2a499 + +2018-10-16 14:06 +0000 [dee1165d31] Corey Farrell + + * astobj2: Eliminate usage of legacy container allocation macros. + + These macros have been documented as legacy for a long time but are + still used in new code because they exist. Remove all references to: + * ao2_container_alloc_options + * ao2_t_container_alloc_options + * ao2_t_container_alloc + + These macro's are still available for use but only in modules. Only + ao2_container_alloc remains due to it's use in over 100 places. + + Change-Id: I1a26258b5bf3deb081aaeed11a0baa175c933c7a + +2018-09-28 13:31 +0000 [90887af808] Corey Farrell + + * lock: Replace __ast_mutex_logger with private log_mutex_error. + + __ast_mutex_logger used the variable `canlog` without accepting it as a + argument. Replace with internal macro `log_mutex_error` which takes + canlog as the first arguement. This will prevent confusion when working + with lock.c code, many of the function declare the canlog variable and + in some cases it previously appeared to be unused. + + Change-Id: I83b372cb0654c5c18eadc512f65a57fa6c2e9853 + +2018-10-18 14:36 +0000 [00284352b3] Richard Mudgett + + * app_dial/app_queue: Update application option documentation + + * Update the post-answer documentation and example. The Dial example was + incorrect and misleading for the post-answer subroutine useage. + + * Fix note and warning paragraphs in option descriptions. They don't show + up in the wiki. + + Change-Id: I81019a1fd75d5b9151f76b52c38e2a90da682d14 + +2018-10-18 14:56 +0000 [495a1e7e5c] Sean Bright + + * samples: PARKINGSLOT -> PARKING_SPACE in parking sample config + + PARKINGSLOT was deprecated in Asterisk 12 but the sample config was not + updated to reflect that. + + Change-Id: I3e087c19d9ee587094fa5304102d8084a79c2b3c + +2018-10-18 12:32 +0000 [2384d6eb87] Richard Mudgett + + * Fix 'statement' typo throughout code. + + Most were in comments. A couple were in warning messages. + + Pointed out by Jonathan H on the Asterisk users mailing list. + + Change-Id: I6286939dff5d0a27a2758140570106f1cb351855 + +2018-10-17 16:08 +0000 [718ccd51a3] Richard Mudgett + + * res_rtp_asterisk.c: Add conditional module dependency to res_pjproject + + * The dependency ensures that res_pjproject cannot be manually unloaded + before res_rtp_asterisk. + * The dependency allows startup loading errors to report that + res_rtp_asterisk depends upon res_pjproject. + + Change-Id: Icf5e7581f4ddd6189929f6174c74dd951f887377 + +2018-10-17 14:34 +0000 [7687630074] Richard Mudgett + + * modules: Add missing run time module support levels. + + Change-Id: I29b9dbfa4bbfc49f21eba356858e38b1d3041824 + +2018-10-14 07:58 +0000 [abee4fd072] Corey Farrell + + * taskprocessor: Warn on unused result from pushing task. + + Add attribute_warn_unused_result to ast_taskprocessor_push, + ast_taskprocessor_push_local and ast_threadpool_push. This will help + ensure we perform the necessary cleanup upon failure. + + Change-Id: I7e4079bd7b21cfe52fb431ea79e41314520c3f6d + +2018-10-16 12:28 +0000 [3fe9c41342] Richard Mudgett + + * bundled pjproject: Remove timer cleanup usage patch. + + This patch is not in the upstream pjproject and does unsafe things with + the timer->_timer_id and timer->_grp_lock values in pj_timer_entry_reset() + outside of the timer heap lock. pj_timer_entry_reset() is also called for + timers that are not about to be rescheduled in a few places. + + Change-Id: I4fe0b4bc648f7be5903cf4531b94fc87275713c1 + +2018-10-10 04:37 +0000 [35f44be460] Corey Farrell + + * refdebug: Create refstats.py script. + + This allows us to process AO2 statistics for total objects, memory + usage, memory overhead and lock usage. + + * Install refstats.py and reflocks.py into the Asterisk scripts folder. + * Enable support for reflocks.py without DEBUG_THREADS. + + Steal a bit from the ao2 magic to flag when an object lock is used. + Remove 'lockobj' from reflocks.py since we can now record 'used' or + 'unused' for those objects. + + Add comments to explain thread safety of the 'struct __priv_data' + bitfields. + + Change-Id: I84e9d679cc86d772cc97c888d9d856a17e0d3a4a + +2018-10-12 12:14 +0000 [0f53930c05] Alexei Gradinari + + * res_pjsip: set callerid_tag to empty string + + This patch sets the callerid_tag to empty string by default. + + If the callerid_tag is set to NULL then the tag does not + become part of a connected line update. + For example: + Alice's tag is "Alice". + Bob's tag is empty. + Charlie's tag is "Charlie". + Alice calls Bob and then does attended transfer to Charlie. + When Alice hangs up the CONNECTEDLINE(tag) is "Alice" + on the interception routine on the Charlie's channel, but should be empty. + + Ths patch also fix memory leaks if there are more then one options + "callerid", "callerid_tag", "voicemail_extension" and "contact_user" + in the pjsip.conf endpoint definition. + + Change-Id: I86ba455c4677ca8d516d9a04ce7fb4d24dd576e4 + +2018-10-11 06:24 +0000 [08e5bbfec0] Corey Farrell + + * threadpool: Eliminate pointless AO2 usage. + + thread_worker_pair, set_size_data and task_pushed_data structures are + allocated with AO2 objects, passed to a taskprocessor, then released. + They never have multiple owners or use locking so AO2 only adds + overhead. + + Change-Id: I2204d2615d9d952670fcb48e0a9c0dd1a6ba5036 + +2018-10-12 12:21 +0000 [a5023d4f75] Corey Farrell + + * main/astfd: Fix GCC8 format-truncation warning. + + The field used to store call arguments was not large enough to hold the + arguments string that can be constructed for 'open'. Expand it to + prevent this warning/error. + + Change-Id: I514927f256481bc84df10a51b19d5b5fb1bc387e + +2018-10-10 06:38 +0000 [5ea517f80e] Corey Farrell + + * chan_sip: Tell module loader that chan_sip is extended support. + + Change-Id: I33508c134b1be888b8884f5dcfee19087634e415 + +2018-10-09 16:18 +0000 [c001974f4f] Richard Mudgett + + * res_statsd.c: Fix returned reload status. + + The return status when there was no change in statsd.conf was incorrect. + This resulted in the wrong status message on the CLI when reloading the + module. + + * Fixed cleanup on initial load if initializing statsd failed. + + Change-Id: Id24fae75f1a7ff584a444a5680e867d989792481 + +2018-10-03 16:51 +0000 [e0496fe062] Emmanuel BUU + + * core/frame: generate correct T.140 payload in ast_sendtext_data() + + ast_sendtext_data() would create an incorrect T.140 text frame which + length include the null terminator byte. It causes ultimately RTP + packets to be send with this trailing 0. The proposed fix just set the + correct length to the text frame + + ASTERISK-28089 + Reported by: Emmanuel BUU + Tested by: Emmanuel BUU + + Change-Id: I7ab1b9ed1e21683b2b667ea0a59d9aba3c77dd96 + +2018-10-04 18:33 +0000 [c6ee3cf639] Corey Farrell + + * loader: Flag module as declined in all cases where it fails to load. + + This has no effect on startup since AST_MODULE_LOAD_FAILURE aborts + startup, but it's possible for this code to be returned on manual load + of a module after startup. + + It is an error for a module to not have a load callback but this is not + a fatal system error. In this case flag the module as declined, return + AST_MODULE_LOAD_FAILURE only if a required module is broken. + + Expand doxygen documentation for AST_MODULE_LOAD_*. + + Change-Id: I3c030bb917f6e5a0dfd9d91491a4661b348cabf8 + +2018-10-04 13:13 +0000 [77f151d927] Richard Mudgett + + * func_periodic_hook.c: Cleanup module resources on failure. + + * Make load_module() cleanup if it failed to setup the module. + + * Make unload_module() always return 0. It is silly to fail unloading if + the hook function we try to unregister was not even registered. + + Change-Id: I280fc6e8ba2a7ee2588ca01d870eebaf74b4ffe6 + +2018-10-04 11:49 +0000 [bc335ceda8] Richard Mudgett + + * codec_speex.c: Cleanup module loading to DECLINE and not FAILURE. + + If codec_speex fails to register a translator it would cause Asterisk to + exit instead of continue as a DECLINED module. + + * Make unload_module() always return 0. It is silly to fail unloading if + any translators we try to unregister were not even registered. + + Change-Id: Ia262591f68333dad17673ba7104d11c88096f51a + +2018-10-04 13:03 +0000 [6fd21a6af6] George Joseph + + * CI: Fix missing () in gates.jenkinsfile + + Change-Id: I2f252e0f8c7f1a6328438fbd2be5d6574b7dfa5b + +2018-10-04 10:13 +0000 [1598c7a306] George Joseph + + * CI: Add timestamps and timeouts to jenkinsfiles + + Change-Id: Ide83574dc957bc1df28e30a69079140050dfc35f + +2018-10-03 17:02 +0000 [b2f96fdcfe] Sean Bright + + * ast_coredumper: Remove .gdbinit file on exit + + Change-Id: I1297de78628773ca368e687c6f148bf74857cae9 + +2018-10-03 09:33 +0000 [d0a1237c19] Sean Bright + + * CI: Look up configured kernel.core_pattern sysctl + + Change-Id: I8246a0147df8d821fbbcabc1db1887104b8bedc4 + +2018-10-03 15:51 +0000 [48bb4543d9] Corey Farrell + + * jenkins: Fix cleanup command redirection. + + Fix redirection to /dev/null of cleanup commands. The '2' was being + interpreted as part of the command instead of part of the redirect. + + Change-Id: I2e3a591b165e0288c4b82b9ef475fdfd5392a90a + +2018-10-03 15:29 +0000 [d027d193b8] George Joseph + + * ast_coredumper: Don't use "declare -n" + + Change-Id: I7ddfed4cd6549a0cd458e4d5cf9ac95d784de6cb + +2018-10-02 16:15 +0000 [7eda6263c2] Richard Mudgett + + * res_smdi.c: Fix module ref counting and inverted test. + + I think this module is so screwed up that it doesn't work anymore. Even + with these attempts to fix things it still won't gracefully shut down. + The module refs will not go to zero to allow unloading the module. + + * Fix module ref counting dealing with the SMDI interface object. There + were several off-nominal paths that unbalanced the module ref count. Also + the destructor freed the ao2 object itself which is bad. Made the + smdi_read thread not hold its own ref to the SMDI interface object so when + all refs go away the destructor will stop the listener thread. + + * Fixed the smdi_load() return code of 1 concerning the number of + listeners. The test was inverted. + + Change-Id: Ic288db51b58e395d6a2fc3847f77176c16988784 + +2018-10-02 16:23 +0000 [5b72bb0278] Richard Mudgett + + * res_smdi.c: Made use defaults if the smdi.conf file does not exist. + + This module is an optional dependency of a couple of other modules. If it + declines to load, it then forces other modules that can optionally use + this module to also decline. + + * Made use the default configuration if the config file does not exist and + simplified some of the logic. + + Change-Id: Ib93191f1fe28c0dd9ebe3d84c7762b32f83c4eb9 + +2018-10-02 17:15 +0000 [fa9cd68589] Corey Farrell + + * astobj2: Comment on OBJ_NOLOCK in ao2_container_clone. + + The test for OBJ_NOLOCK looks wrong but it isn't. Add comments to + prevent confusion. + + Change-Id: I9662b82eb39e7627a1f1944fd18f967a2b987344 + +2018-10-03 09:05 +0000 [8b3b504b79] Sean Bright + + * CI: Use brace expansion instead of calling out to seq + + Also make the shebang in publishAsteriskDocs.sh the first line. + + Change-Id: I3fdd6f22e652e4fb5b5fe85df46fa34eb6d0cf08 + +2018-10-03 08:59 +0000 [5f7350d68b] Sean Bright + + * CI: Use bindport instead of port in test http.conf + + Change-Id: Ife9a6879da63a56e5b8348a2024eeed4e7b1615b + +2018-10-03 07:56 +0000 [2b4752911f] Sean Bright + + * http.c: Reload TLS even if http.conf hasn't changed + + There is currently no way to indicate to Asterisk that TLS certificates + and/or keys have been updated other than by modifying http.conf or + restarting Asterisk. + + There is already code in main/tcptls.c that determines if a reload is + actually necessary based on the hashes of the certicate and dependent + files, so this change merely gives us a way to request a reload without + explicitly modifying http.conf. + + Change-Id: Ie795420dcc7eb3d91336820688a29adbcc321276 + +2018-10-01 22:12 +0000 [3b2310332d] Corey Farrell + + * core: Disable astobj2 locking for some common objects. + + * ACO options + * Indications + * Module loader ref_debug object + * Media index info and variants + * xmldoc items + + These allocation locations were identified using reflocks.py on the + master branch. + + Change-Id: Ie999b9941760be3d1946cdb6e30cb85fd97504d8 + +2018-10-02 13:29 +0000 [c2e6efa63d] Richard Mudgett + + * res_statsd.c: Made use defaults if the statsd.conf file does not exist. + + This module is an optional dependency of many modules. If it declines to + load it then forces other modules that can optionally use this module to + also decline. + + * Made use default configuration if there is a config error or the config + file does not exist. + + Change-Id: If1068a582ec54ab7fb437265cb5370a97a825737 + +2018-09-13 13:03 +0000 [326574d4fc] Corey Farrell + + * Resolve warning about duplicate 'dialplan' CLI. + + Change-Id: I029db1b4a32ccfb38374d6fe944dc430866f4b30 + +2018-10-02 01:33 +0000 [65f06a4505] Corey Farrell + + * loader: Fix result of module reload error. + + When a module reload fails we never set AST_MODULE_RELOAD_ERROR. This + caused reload failures to incorrectly report 'No module found'. + + Change-Id: I5f3953e0f7d135e53ec797f24c97ee3f73f232e7 + +2018-09-28 10:13 +0000 [f066dbc353] Corey Farrell + + * loader: Improve error handling. + + * Display list of unavailable dependencies when they cause another + module to fail loading. + * When a module declines to load find all modules which depend on it so + they can be declined and listed together. + * Prevent retry of declined modules during startup. + * When a module fails to dlopen try loading it with RTLD_LAZY so we can + attempt to display the list of missing dependencies. + + These changes are meant to reduce logger spam that is caused when a + module has many dependencies and declines to load. This also fixes some + error paths which failed to recognize required modules. + + Module load/start errors are delayed until the end of loader startup. + + Change-Id: I046052c71331c556c09d39f47a3b92975f3e1758 + +2018-09-25 16:19 +0000 [406c5bef0a] Emmanuel BUU + + * core/frame: Fix ast_frdup() and ast_frisolate() for empty text frames + + If a channel creates an AST_TEXT_FRAME with datalen == 0, the ast_frdup() + and ast_frisolate() functions could create a clone frame with an invalid + data.ptr which would cause a crash. The proposed fix is to make sure that + for such empty text frames, ast_frdup() and ast_frisolate() return cloned + text frames with a valid data.ptr. + + ASTERISK-28076 + Reported by: Emmanuel BUU + Tested by: Emmanuel BUU + + Change-Id: Ib882dd028598f13c4c233edbfdd7e54ad44a68e9 + +2018-09-30 23:11 +0000 [693e00eee6] Corey Farrell + + * astobj2: Record lock usage to refs log when DEBUG_THREADS is enabled. + + When DEBUG_THREADS is enabled we can know if the astobj2 mutex / rwlock + was ever used, so it can be recorded in the REF_DEBUG destructor entry. + + Create contrib/scripts/reflocks.py to process locking used by + allocator. This can be used to identify places where + AO2_ALLOC_OPT_LOCK_NOLOCK should be used to reduce memory usage. + + Change-Id: I2e3cd23336a97df2692b545f548fd79b14b53bf4 + +2018-10-01 12:11 +0000 [5a9230eacb] Corey Farrell + + * app_page: Add dependency against app_confbridge. + + Change-Id: I1946509f518961d23fb21229d91676ee3e441921 + +2018-09-28 13:55 +0000 [a2554d5e5a] Richard Mudgett + + * app_queue.c: Fix json ref leak + + Declining the queue_member_status_type stasis message in stasis.conf + causes these messages to leak json objects. + + * Add missing ast_json_unref() if the type is NULL in + queue_publish_member_blob(). + + ASTERISK-28084 + + Change-Id: I691ecf49bd1f7d9c29182e1eee8c4bb7103be9fc + +2018-10-01 03:07 +0000 [266ed3d68b] Corey Farrell + + * Append CHANGES/UPGRADE.txt for module loader changes. + + Change-Id: Ib8db4e14187f5c11ecbff532df17d30c5d36fa3e + +2018-09-25 17:33 +0000 [ab90479642] Alexei Gradinari + + * res_pjsip: improve realtime performance on CLI 'pjsip show contacts' + + CLI command 'pjsip show contacts' inefficiently make a lot of DB requests. + + For example if there are 10k aors then asterisk requests these 10k records + of aor and then does 10k requests of contact - one request per aor. + + Even if use 'like ' the asterisk requests all aor's and contact's + records and then filters them by itself. + + This patch gathers contact's container by + - retrieving all dynamic contacts by regex (filtered by reg_server) + - retrieving all aors with permanent contacts + - finally filters container by regex + + ASTERISK-28077 #close + + Change-Id: Id0ad65d14952a02fb213273a90f3f680a8149618 + +2018-09-28 14:45 +0000 [3337fe85c5] Corey Farrell + + * jansson-bundled: Add patches to improve json_pack error reporting. + + Change-Id: I045e420d5e73e60639079246e810da6ae21ae22b + +2018-09-27 19:32 +0000 [b3b95c8d36] Corey Farrell + + * lock: Improve performance of DEBUG_THREADS. + + Add a volatile flag to lock tracking structures so we only need to use + the global lock when first initializing tracking. + + Additionally add support for DEBUG_THREADS_LOOSE_ABI. This is used by + astobj2.c to eliminate storage for tracking fields when DEBUG_THREADS is + not defined. + + Change-Id: Iabd650908901843e9fff47ef1c539f0e1b8cb13b + +2018-09-27 13:19 +0000 [b4ab26e72f] George Joseph + + * app_confbridge: Use bridge join hook to send join and leave events + + The first attempt at publishing confbridge events to participants + involved publishing them at the same time stasis events were + created. This caused issues with bridge and channel locks. The + second attempt involved publishing them when the stasis events + were received by the code that published the confbridge AMI events. + This caused timing issues because, depending on resources available, + the event could be received before channels actually joined the + bridge and would therefore fail to send messages to the participant. + + This attempt reverts to the original mechanism with one exception. + The join and leave events are published via bridge join and leave + hooks. This guarantees the states of the channels and bridge and + provides deterministic timing for event publishing. + + Change-Id: I2660074f8a30a5224cb953d5e047ee84484a9036 + +2018-09-27 04:51 +0000 [33455f8d6f] Corey Farrell + + * astobj2: Reduce memory overhead. + + Reduce options to 2-bit field, magic to 30 bit field. Move ref_counter + next to options and explicitly use int32_t so the fields will pack. + + This reduces memory overhead for every ao2 object by 8 bytes on x86_64. + + Change-Id: Idc1baabb35ec3b3d8de463c4fa3011eaf7fcafb5 + +2018-09-27 15:01 +0000 [d1698b4e0b] Sean Bright + + * config.c: Cleanup AST_INCLUDE_GLOB + + * In main/config.c, AST_INCLUDE_GLOB is fixed to '1' making the #ifdefs + pointless. + + * In utils/extconf.c, AST_INCLUDE_GLOB is never defined so there is a + lot of dead code. + + Change-Id: I1bad1a46d7466ddf90d52cc724e997195495226c + +2018-09-27 05:33 +0000 [0fe08c5e79] Corey Farrell + + * astobj2: Fix shutdown order. + + When REF_DEBUG and AO2_DEBUG are both enabled we closed the refs log + before we shutdown astobj2_container. This caused the AO2_DEBUG + container registration container to be reported as a leak. + + Change-Id: If9111c4c21c68064b22c546d5d7a41fac430430e + +2018-09-05 21:14 +0000 [958727cece] Cao Minh Hiep + + * app_queue: Fix Attended transfer hangup with removing pending member. + + This issue related to setting of holdtime, announcements, member delays. + It works well if we set the member delays to "0" and no announcements + and no holdtime.This issue will happen if we set member delays to "1", + "2"... or announcements or holdtime and hangs up the call during + processing it. + + And here is the reason: + (At the step of answering a phone.) + It takes care any holdtime, announcements, member delays, + or other options after a call has been answered if it exists. + + Normally, After the call has been aswered, + and we wait for the processing one of the cases of the member delays + or hold time or announcements finished, "if (ast_check_hangup(peer))" + will be not executed, then queue will be updated at update_queue(). + Here, pending member will be removed. + + However, after the call has been aswered, + if we hangs up the call during one of the cases of the member delays + or hold time or announcements, "if (ast_check_hangup(peer))" + will be executed. + outgoing = NULL and at hangupcalls, pending members will not be removed. + + * This fixed patch will remove the pending member from container + before hanging up the call with outgoing is NULL. + + ASTERISK-27920 + + Reported by: Cao Minh Hiep + Tested by: Cao Minh Hiep + + Change-Id: Ib780fbf48ace9d2d8eaa1270b9d530a4fc14c855 + +2018-06-26 09:17 +0000 [1f68614f3c] Moritz Fain + + * res_stasis: Fix stale data in ARI bridges + + Fixed an issue that resulted in "Allocation failed" each time an ARI + request was made to start playing MOH on a bridge. + + In bridge_moh_create() we were attaching the after bridge callbacks to + chan which is the ;1 channel of the unreal channel pair. We should have + attached them to the ;2 channel which is pushed into the bridge by + ast_unreal_channel_push_to_bridge(). The callbacks are called when the + specific channel leaves the bridging system. Since the ;1 channel is + never put into a bridge the callbacks never get called. The callbacks + then never remove the moh_wrapper from the app_bridges_moh container. As + a result we cannot find the channel associated with the wrapper to start + MOH because it has hungup. This is the reason causing the reported issue. + + * Rather than using after bridge callbacks to cleanup, we now have + moh_channel_thread() doing the cleanup when the channel hangs up. + + * Fixed moh_channel_thread() accumulating control frames on the stasis + bridge MOH channel until MOH is stopped. Control frames are no longer + accumulated while MOH is playing. + + * Fixed channel ref counting issue. stasis_app_bridge_moh_channel() may + or may not return a channel ref. As a result ast_ari_bridges_start_moh() + wouldn't know it may have a channel ref to release. + stasis_app_bridge_moh_channel() will now return a ref with the channel it + returns. + + * Eliminated RAII_VAR in bridge_moh_create(). + + ASTERISK-26094 #close + + Change-Id: Ibff479e167b3320c68aaabfada7e1d0ef7bd548c + +2018-09-10 11:28 +0000 [67e1e49e08] Ben Ford + + * res_rtp_asterisk.c: Add "seqno" strictrtp option + + When networks experience disruptions, there can be large gaps of time + between receiving packets. When strictrtp is enabled, this created + issues where a flood of packets could come in and be seen as an attack. + Another option - seqno - has been added to the strictrtp option that + ignores the time interval and goes strictly by sequence number for + validity. + + Change-Id: I8a42b8d193673899c8fc22fe7f98ea87df89be71 + +2018-09-20 13:59 +0000 [e04c49b517] Alexei Gradinari + + * res_odbc: fix missing SQL error diagnostic + + On SQL error there is not diagnostic information about this error. + There is only + WARNING res_odbc.c: SQL Execute error -1! + + The function ast_odbc_print_errors calls a SQLGetDiagField to get the number + of available diagnostic records, but the SQLGetDiagField returns 0. + However SQLGetDiagRec could return one diagnostic records in this case. + + Looking at many example of getting diagnostics error information + I found out that the best way it's to use only SQLGetDiagRec + while it returns SQL_SUCCESS. + + Also this patch adds calls of ast_odbc_print_errors on SQL_ERROR + to res_config_odbc. + + ASTERISK-28065 #close + + Change-Id: Iba5ae5470ac49ecd911dd084effbe9efac68ccc1 + +2018-09-26 08:12 +0000 [227d9719da] George Joseph + + * CI: Add --test-timeout option to runTestsuite.sh + + The default is 600 seconds. + Also added timeouts to the *TestGroups.json files. + + Change-Id: I8ab6a69e704b6a10f06a0e52ede02312a2b72fe0 + +2018-09-18 08:01 +0000 [681e115ff1] Peter Katzmann + + * chan_sip: SipNotify on Chan_Sip vi AMI behave different to CLI + + With tls and udp enabled asterisk generates a warning about sending + message via udp instead of tls. + sip notify command via cli works as expected and without warning. + + asterisk has to set the connection information accordingly to connection + and not on presumption + + ASTERISK-28057 #close + + Change-Id: Ib43315aba1f2c14ba077b52d8c5b00be0006656e + +2018-09-24 17:56 +0000 [cc8e0dfabd] George Joseph + + * configure.ac: Check for unbound version >= 1.5 + + In order to do this and provide good feedback, a new macro was + created (AST_EXT_LIB_EXTRA_CHECK) which does the normal check and + path setups for the library then compiles, links and runs a supplied + code fragment to do the final determination. In this case, the + final code fragment compares UNBOUND_VERSION_MAJOR + and UNBOUND_VERSION_MINOR to determine if they're greater than or + equal to 1.5. + + Since we require version 1.5, some code in res_resolver_unbound + was also simplified. + + ASTERISK-28045 + Reported by: Samuel Galarneau + + Change-Id: Iee94ad543cd6f8b118df8c4c7afd9c4e2ca1fa72 + +2018-09-24 12:43 +0000 [7c49ea7cff] Joshua Colp + + * res_rtp_asterisk: Raise event when RTP port is allocated + + This change raises a testsuite event to provide what port + Asterisk has actually allocated for RTP. This ensures that + testsuite tests can remove any assumption of ports and instead + use the actual port in use. + + ASTERISK-28070 + + Change-Id: I91bd45782e84284e01c89acf4b2da352e14ae044 + +2018-07-16 22:55 +0000 [ede59966d9] Corey Farrell + + * jansson: Backport fixes to bundled, use json_vsprintf if available. + + Use json_vsprintf from versions which contain fix for va_copy leak. + + Apply fixes from jansson master: + * va_copy leak fix. + * Avoid potential invalid memory read in json_pack. + * Rename variable that shadowed another. + + Change-Id: I7522e462d2a52f53010ffa1e7d705c666ec35539 + +2018-07-16 22:55 +0000 [7b0dbda936] Corey Farrell + + * json: Take advantage of new API's. + + * Use "o*" format specifier for optional fields in ast_json_party_id. + * Stop using ast_json_deep_copy on immutable objects, it is now thread + safe to just use ast_json_ref. + + Additional changes to ast_json_pack calls in the vicinity: + * Use "O" when an object needs to be bumped. This was previously + avoided as it was not thread safe. + * Use "o?" and "O?" to replace NULL with ast_json_null(). The + "?" is a new feature of ast_json_pack starting with Asterisk 16. + + Change-Id: I8382d28d7d83ee0ce13334e51ae45dbc0bdaef48 + +2018-09-17 15:35 +0000 [755febe497] Kevin Harwell + + * rtp_engine: rtcp_report_to_json can overflow the ssrc integer value + + When writing an RTCP report to json the code attempts to pack the "ssrc" and + "source_ssrc" unsigned integer values as a signed int value type. This of course + means if the ssrc's unsigned value is greater than that which can fit into a + signed integer value it gets converted to a negative number. Subsequently, the + negative value goes out in the json report. + + This patch now packs the value as a json_int_t, which is the widest integer type + available on a given system. This should make it so the value no longer + overflows. + + Note, this was caught by two failing tests hep/rtcp-receiver/ and + hep/rtcp-sender. + + Change-Id: I2af275286ee5e795b79f0c3d450d9e4b28e958b0 + +2018-09-21 14:32 +0000 [ba91c73f8e] George Joseph + + * app_voicemail: Fix stack overrun in append_mailbox + + The append_mailbox function wasn't calculating the correct length + to pass to ast_alloca and it wasn't handling the case where context + might be empty. + + Found by the Address Sanitizer. + + Change-Id: I7eb51c7bd18a7a8dbdba261462a95cc69e84f161 + +2018-09-21 15:23 +0000 [0a1a96d331] George Joseph + + * channel.c: Address stack overflow in does_id_conflict() + + does_id_conflict() was passing a pointer to an int to a callback + that expected a pointer to a size_t. + + Found by the Address Sanitizer. + + Change-Id: I0ff542067eef63a14a60301654d65d34fe2ad503 + +2018-09-21 10:19 +0000 [7a7b21f3a0] Corey Farrell + + * res_rtp_asterisk: Fix crash on ast_rtp_new failure. + + ast_rtp_new free'd rtp upon failure, but rtp_engine.c would also call + the destroy callback. Remove call to ast_free from ast_rtp_new, leave + it to rtp_engine.c to initiate the full cleanup. Add error detection + for the ssrc_mapping vector initialization. In rtp_allocate_transport + set rtp->s = -1 in the failure path where we close that FD to ensure we + don't try closing it twice. + + ASTERISK-27854 #close + + Change-Id: Ie02aecbb46228ca804e24b19cec2bb6f7b94e451 + +2018-09-20 15:26 +0000 [880905e7eb] Sean Bright + + * res_rtp_asterisk: Reset all settings on module reload + + 'rtpchecksums' and 'rtcpinterval' are not being reset to their defaults + if they are not present in the updated configuration file. + + Change-Id: I1162e40199314d46cf3225d5e1271c4c81176670 + +2018-09-20 10:15 +0000 [fa1b836374] George Joseph + + * app_voicemail: Cleanup mailbox topic and cache + + app_voicemail wasn't properly cleaning up the stasis cache or the + mwi topic pool when the module was unloaded or when a user was + deleted as a result of a reload. This resulted in leaks in both + areas. + + * app_voicemail now calls ast_delete_mwi_state_full when it frees + a user structure and ast_delete_mwi_state_full in turn now calls + the new stasis_topic_pool_delete_topic function to clear the topic + from the pool. + + Change-Id: Ide23144a4a810e7e0faad5a8e988d15947965df8 + +2018-08-16 10:45 +0000 [339bf0cf7b] Sean Bright + + * AST-2018-009: Fix crash processing websocket HTTP Upgrade requests + + The HTTP request processing in res_http_websocket allocates additional + space on the stack for various headers received during an Upgrade request. + An attacker could send a specially crafted request that causes this code + to overflow the stack, resulting in a crash. + + * No longer allocate memory from the stack in a loop to parse the header + values. NOTE: There is a slight API change when using the passed in + strings as is. We now require the passed in strings to no longer have + leading or trailing whitespace. This isn't a problem as the only callers + have already done this before passing the strings to the affected + function. + + ASTERISK-28013 #close + + Change-Id: Ia564825a8a95e085fd17e658cb777fe1afa8091a + +2018-09-20 09:41 +0000 [1a9c69d729] George Joseph + + * stasis: Add function to delete topic from pool + + There's been a long standing leak when using topic pools. The + topics in the pool get cleaned up when the last pool reference is + released but you can't remove a topic specifically. If you reloaded + app_voicemail for instance, and mailboxes went away, their topics + were left in the pool. + + * Added stasis_topic_pool_delete_topic() so modules can clean up + topics from pools. + * Registered the topic pool containers so it can be examined from + the CLI when AO2_DEBUG is enabled. They'll be named + "-pool". + + Change-Id: Ib7957951ee5c9b9b4482af7b9b4349112d62bc25 + +2018-09-03 09:55 +0000 [8811ab1803] David Hajek + + * chan_sip.c: chan_sip unstable with TLS after asterisk start or reloads + + Fixes random asterisk crash on start or reload with TLS phones. + + ASTERISK-28034 #close + Reported-by: David Hajek + + Change-Id: I2a859f97dc80c348e2fa56e918214ee29521c4ac + +2018-09-20 04:48 +0000 [2f38bcdfc0] Joshua Colp + + * res_remb_modifier: Add module for controlling REMB from CLI. + + This adds a module which registers a CLI command that can set the + REMB bitrate value for REMB as it enters or exits Asterisk. This + allows you to ignore what Asterisk or a client produces and is + useful for demonstrations. + + This does not generate REMB frames, however, but just modifies + them as they flow to or from a channel. + + Change-Id: Ib089427c46a4a36d645cecfe02406adb38c17bec + +2018-09-14 15:51 +0000 [f6695249a5] Richard Mudgett + + * stasis: No need to keep a stasis type ref in a stasis msg or cache object. + + Stasis message types are global ao2 objects and we make stasis messages + and cache entries hold references to them. Since there are currently + situations where cache objects are never deleted, the reference count on + the types can exceed 100000 and generate a FRACK assertion message. The + stasis message cache could conceivably also have that many messages + legitimately on large systems. + + The only down side to not holding the message type ref in the stasis + message is it only makes a crash either at shutdown or when manually + unloading a busy module slightly more likely. However, this is more + exposing a pre-existing stasis shutdown ordering issue than a problem with + not holding a message type ref in stasis messages. + + * Made stasis messages and cache entries no longer hold a ref to the + message type. + + Change-Id: Ibaa28efa8d8ad3836f0c65957192424c7f561707 + +2018-09-18 13:59 +0000 [c008c27c85] Richard Mudgett + + * pjproject: Update initial 2.8 patches to apply cleanly. + + ASTERISK-28059 + + Change-Id: I027472f2753391646dde594a709a75f14422db93 + +2018-09-14 15:48 +0000 [192f71b7de] Richard Mudgett + + * stasis_message.c: Don't create immutable stasis objects with locks. + + * Create the stasis message object without a lock as it is immutable. + * Create the stasis message type object without a lock as it is immutable. + * Creating the stasis message type could crash if the passed in type name + is NULL and REF_DEBUG is enabled. Added missing NULL check when passing + the ao2 object tag string. + + Change-Id: I28763c58bb9f0b427c11971d0103bf94055e7b32 + +2018-09-17 11:38 +0000 [60258b4ec1] Joshua Colp + + * pjproject: Upgrade to 2.8. + + This change brings in PJSIP 2.8, removes all the patches + that were merged upstream, and makes a minor change to + support a breaking change that was done. + + ASTERISK-28059 + + Change-Id: I5097772b11b0f95c3c1f52df6400158666f0a189 + +2018-09-18 09:39 +0000 [3e48c34f14] Florian Floimair + + * alembic: fix suppress_q850_reason_headers column name + + In the original commit introducing the feature the column in the alembic + script was called 'suppress_q850_reason_header'. + In the code however the option is called 'suppress_q850_reason_headers' + (trailing 's'). This leads to errors when ARI push configuration is used. + + Change-Id: Ie84808adbca6fcc9136556e4f5d741adbef5d14f + +2018-09-13 07:55 +0000 [29115e2384] George Joseph + + * app_voicemail: Remove need to subscribe to stasis + + app_voicemail was using the stasis cache to build and maintain a + list of mailboxes that had subscribers. It then used this list + to determine if a mailbox should be polled for new messages if + polling was enabled. For this to work, stasis had to cache every + subscription and unsubscription to the mailbox which caused a lot of + overhead, both cpu and memory related. + + Since polling is only required when changes are being made to + mailboxes outside of app_voicemail and since the number of mailboxes + that don't have any subscribers is likely to be very low, all + mailboxes are now polled instead of just the ones with subscribers. + + This paves the way for disabling the caching of stasis subscription + change messages. + + Also fixed cleanup in some of the unit tests that not only left + test users in the users list but also caused segfaults if the tests + were run more than once. + + ASTERISK-27121 + + Change-Id: I5cceb737246949f9782955c64425b8bd25a9e9ee + +2018-09-18 06:08 +0000 [6e79e6b097] Joshua Colp + + * res_pjsip_session: Don't add declined stream if one does not exist. + + Given a scenario where a session refresh was done with a removed + stream we would always add a removed stream to the outgoing SDP + even if one did not already exist. + + This change makes it so that a removed stream is only placed into + the SDP if one already exists. + + ASTERISK-28047 + + Change-Id: Ibb97d21cdeb87a8acae0c720861b0ff255708442 + +2018-09-17 10:38 +0000 [b0a0b975c5] Sean Bright + + * autoconf: Check for srtp_get_version_string() before using it + + Change-Id: Id2a916ff9448706090e72ff2c7fb3f5ba24a05df + +2018-09-17 07:10 +0000 [4a309839eb] George Joseph + + * CI: Fix typo in testsuite git checkout + + Change-Id: I30024515e5b00a5044fd39fbff27d818f016b719 + +2018-09-16 06:08 +0000 [55ca51af21] Sean Bright + + * res_srtp.c: Show linked version of libsrtp on module init + + Change-Id: Ib0a645d6985de5757cc4399ed2524b2d02c4f342 + +2018-09-07 09:40 +0000 [887a315e17] Sean Bright + + * res_pjsip: Log IPv6 addresses correctly + + Both pjsip_tx_data.tp_info.dst_name and pjsip_rx_data.pkt_info.src_name + store IPv6 addresses without enclosing brackets. This causes some log + output to be confusing because it is difficult to separate the IPv6 + address from a port specification. + + * Use pj_sockaddr_print() along with pjsip_tx_data.tp_info.dst_addr and + pjsip_rx_data.pkt_info.src_addr where possible for consistent IPv6 + output. + + * When a pj_sockaddr is not available, explicitly wrap IPv6 addresses + in brackets. + + * When assigning pjsip_rx_data.pkt_info.src_name ourselves, make sure + to also set pjsip_rx_data.pkt_info.src_addr. + + Change-Id: I5cfe997ced7883862a12b9c7d8551d76ae02fcf8 + +2018-09-14 12:31 +0000 [3f9544c1f5] George Joseph + + * CI: Use proper credentials for Security testsuite checkout + + Can't do anonymous http checkout from Security-testsuite. + Need to use same credentials as the gerrit review checkout. + + Change-Id: I87af68c995cb8926f5e87f9af245600d76984f05 + +2018-09-13 11:06 +0000 [17d6d9e1e7] George Joseph + + * stasis_cache: Stop caching stasis subscription change messages + + Since app_voicemail no longer uses the cache to maintain its state + there is no longer a need to cache these messages. + + ASTERISK-27121 + + Change-Id: I321c708505f5ad8d00e1b0afc4c27dc2ac12ecb4 + +2018-09-12 12:39 +0000 [5842741689] Corey Farrell + + * CI: Use .gitreview to default BRANCH_NAME. + + This ensures that binary modules are avoided in the master branch even + if BRANCH_NAME is not set. + + Change-Id: I79162d2063f22fa9d6b31fde4827ace2dd5bf0da + +2018-09-11 07:22 +0000 [78453e65fd] Walter Doekes + + * optional_api: Remove unused nonoptreq fields + + As they're not actively used, they only grow stale. The moduleinfo field itself + is kept in Asterisk 13/15 for ABI compatibility. + + ASTERISK-28046 #close + + Change-Id: I8df66a7007f807840414bb348511a8c14c05a9fc + +2018-09-03 06:50 +0000 [f4bffe2326] lvl + + * manager: Set AMI event "Newexten" to the EVENT_FLAG_DIALPLAN class + + The documentation already specified EVENT_FLAG_DIALPLAN for this + event, but the implementation was using EVENT_FLAG_CALL. + + Using EVENT_FLAG_DIALPLAN allows AMI clients to opt out of receiving + this highly verbose event. + + ASTERISK-28033 + + Change-Id: I45b3119f30e4dbc17b49831f2b1a4f2c1beadafe + +2018-09-12 07:18 +0000 [e5739c494c] Sean Bright + + * res_pjproject: Fix sockaddr conversion routines for non-bundled PJSIP + + The bundled version of pjproject has a patch for Solaris compatability + that changes the definition of various socket structures which we need + to account for when compiling against a non-bundled version. + + ASTERISK-28049 #close + + Change-Id: Ia1ea47c433fc2d915115193ee889a752373925f0 + +2018-09-10 22:28 +0000 [ecb3b23b07] Corey Farrell + + * Build System: Resolve conflict between DESTDIR and bundled jansson. + + If Asterisk is built using a DESTDIR this will cause the bundled jansson + to be installed to an unexpected location and we will fail to find it. + + Change-Id: Id033e2813261e0d45232383d44c6391122169548 + +2018-08-30 03:42 +0000 [ccfd2e0f5d] Frederic LE FOLL + + * res_musiconhold.c: Restart MOH if previous hold just reached end-of-file + + On MOH activation, moh_files_readframe() is called while the current + stream attached to the channel is NULL and it calls ast_moh_files_next() + immediately. However, it won't call ast_moh_files_next() again if sample + reading fails. The failure may occur because res_musiconhold retains the + last sample reading position in the channel data and MOH during the + previous hold/retrieve just reached EOF. Obviously, a bit of bad luck is + required here. + + * Restructured moh_files_readframe() to try a second time to start MOH if + there was no stream setup and the saved position was at EOF. Also added + comments describing what is going on for each step. + + ASTERISK-28029 + + Change-Id: I1508cf2c094f8feca22d6f76deaa9fdfa9944860 + +2018-09-05 06:39 +0000 [af6a3d02e1] Joshua Colp + + * core: Don't stop generators when writing RTCP frames. + + Generators provide such functionality as tone generation or + silence generation. RTCP frames provide RTCP information and + should not stop generators from operating. + + ASTERISK-28005 + + Change-Id: Ieadada07b068a7aa426e8763f1b73a18e1ac34a9 + +2018-09-03 06:28 +0000 [034a3d8b86] lvl + + * app_queue: Update realtime queuemembers after wait_a_bit(), not before + + This ensures the most up-to-date information is used for the next + call attempt. + + ASTERISK-28032 + + Change-Id: I02fc17c6ffb50bb60ea97c2d2e6023e8061815ce + +2018-08-28 08:42 +0000 [3134fd95a9] Sean Bright + + * res_pjproject: Add utility functions to convert between socket structures + + Currently, to convert from a pj_sockaddr to an ast_sockaddr, the address + needs to be rendered to a string and then parsed into the correct + structure. This also involves a call to getaddrinfo(3). The same is true + for the inverse operation. + + Instead, because we know the internal structure of both ast_sockaddr and + pj_sockaddr, we can translate directly between the two without the + need for an intermediate string. + + Change-Id: If0fc4bba9643f755604c6ffbb0d7cc46020bc761 + +2018-08-30 13:08 +0000 [9fb166cf3b] George Joseph + + * stasis_cache: Prune stasis_subscription_change messages + + The stasis cache provides a way to reconstruct the current state + of topic subscribers. Unfortunately, since every subscribe and + unsubscribe is cached, the cache continues to grow unabated while + asterisk is running. This patch removes subscribe messages from + the cache when the corresponding unsubscribe is received. + + This patch also registers the cache containers with ao2 so that if + AO2_DEBUG is turned on, you can list the container and get its + stats from the CLI. + + ASTERISK-27121 + + Change-Id: I3d18905e477f3721815da91f30da8d3fbb2d4f56 + +2018-09-03 09:27 +0000 [8879a62c1c] Rodrigo Ramírez Norambuena + + * app_dial: set the comment for OPT_ARG_ANNOUNCE to really what is done + + Change-Id: I08f88adb09f7e5813f37e70fecd787468cdb32c8 + +2018-08-15 14:27 +0000 [cfb854e241] Chris-Savinovich + + * pbx_config.c: Fix reloading module if initially declined to load + + Added decline if extensions.conf file not available + when loading pbx_config, and also made sure everything + gets properly unregistered and/or destroyed on unload. + + Change-Id: Ib00665106043b1be5148ffa7a477396038915854 + +2018-08-30 14:42 +0000 [4fcdcfaa37] Richard Mudgett + + * http.c: Give HTTP error response when received lines are too long. + + Added a check when we receive a HTTP request line or header line that is + too long. We now return an error response to the sender because we are + not able to process the request. + + Change-Id: I6df2705435fd7dde4d5d3bdf7acec859cfb7c12d + +2018-08-29 16:14 +0000 [f6a165208b] Richard Mudgett + + * iostream.c: Fix ast_iostream_gets() needlessly returning failure. + + Providing a buffer larger than the internal buffer of ast_iostream_gets() + fails to get lines longer than the internal buffer. + + * Made ast_iostream_gets() fill the supplied buffer with read data until + either a '\n' is found or the supplied buffer is filled just like fgets(). + + Change-Id: If18b3f6ee500e22f0633a68779ed09f7e0f305ed + +2018-08-06 15:37 +0000 [4dd8b5bbb4] Richard Mudgett + + * res_pjsip: Fix mwi_subscribe_replaces_unsolicited type mismatch + + ASTERISK-27988 + + Change-Id: Iccafdd0552ea8aaed647620fb14499f1bf341843 + +2018-08-16 09:04 +0000 [1edd9eb309] Rodrigo Ramírez Norambuena + + * make config: os-release output error. + + Fix not show the error + "/bin/sh: /etc/os-release: No such file or directory" when the command + 'make config' is run in a System without systemv. + + The instruction 'make config' pre execute the syntax + "$(shell . /etc/os-release && echo $$ID)" to identified if system is a + Slackware and Opensuse. + + This change prevent show the message and is send to the /dev/null + + Change-Id: I7f43e281a8d9405b2519fc653de82d9b8b645fdf + +2018-08-29 05:18 +0000 [390d0b42ca] Joshua Colp + + * res_fax: Handle fax gateway being started more than once. + + The T.38 fax gateway state machine can cause the fax gateway + to be started more than once on a channel depending on the + responses of the remote endpoint. This would previously leak + the channel name, channel unique id, and underlying fax engine + state. This change instead makes it so that if the fax gateway + session is already present and not reserved the fax gateway + is not started again. + + ASTERISK-27981 + + Change-Id: I552d95086860cb18f2522ee40ef47b13b6da2e0e + +2018-08-28 08:01 +0000 [245fb462d6] Sean Bright + + * res_pjsip_transport_websocket: Properly set src_name for IPv6 + + SIP responses over WebSockets when the client is using IPv6 have invalid + Via headers according to RFC 3261. The 'received' header parameter + should not be wrapped in brackets if it is an IPv6 address. + + When src_name is populated by the built-in PJSIP transports, the code + uses pj_sockaddr_print() with 'flags' set to 0, meaning that the + brackets are not rendered around IPv6 addresses. + + This may be related to ASTERISK~27101. + + See also: https://github.com/onsip/SIP.js/pull/594 + + ASTERISK-28020 #close + + Change-Id: I8ea9d289901b837512bee2ca2535e3dc14f04d77 + +2018-08-26 13:18 +0000 [1b1f47bef6] Corey Farrell + + * Create --disable-binary-modules option. + + This new option can be passed for ./configure or + ./tests/CI/buildAsterisk.sh to prevent download/install of binary + modules. + + Normally enabling the categories MENUSELECT_CODECS or MENUSELECT_RES + will result in binary modules being enabled even if the build target is + incompatible with those modules. This includes CI scripts which enable + categories before disabling specific modules. + + If more binary modules are offered in the future this will help avoid + accidentally downloading them if unwanted or incompatible. Adding a + binary module will only require creating a new menuselect entry similar + to the existing ones, it will not be necessary to modify the CI scripts. + + Change-Id: I6b1bd1c75a2e48f05b8b8a45b7a7a2d00a079166 + +2018-08-21 07:59 +0000 [aa2755cbb3] Emmanuel BUU + + * res/res_rtp_asterisk: remove debug traces generated by an empty frame + + The realtime text timer pops regularly and sends text frames even if + the buffer is empty. This causes a lot of unecessary debug logging. + + * Made red_write() test if we need to send a frame before calling + ast_rtp_write() + + ASTERISK-28002 + Reported by: Emmanuel BUU + Tested by: Emmanuel BUU + + Change-Id: Icf81310c3b8080b615a42060afc02ab41f9523dd + +2018-08-13 08:12 +0000 [46442aa9e5] Jaco Kroon + + * chan_sip: improved ip:port finding of peers for non-UDP transports. + + Also remove function peer_ipcmp_cb since it's not used (according to + rmudgett). + + Prior to b2c4e8660a9c89d07041271371151779b7ec75f6 (ASTERISK_27457) + insecure=port was the defacto standard. That commit also prevented + insecure=port from being applied for sip/tcp or sip/tls. + + Into consideration there are three sets of behaviour: + + 1. "previous" - before the above commit. + 2. "current" - post above commit, pre this one. + 3. "new" - post this commit. + + The problem that the above commit tried to address was guests over TCP. + It succeeded in doing that but broke transport!=udp with host!=dynamic. + + This commit attempts to restore sane behaviour with respect to + transport!=udp for host!=dynamic whilst still retaining the guest users + over tcp. + + It should be noted that when looking for a peer, two passes are made, the + first pass doesn't have SIP_INSECURE_PORT set for the searched-for peer, + thus looking for full matches (IP + Port), the second pass sets + SIP_INSECURE_PORT, thus expecting matches on IP only where the matched + peer allows for that (in the author's opinion: UDP with insecure=port, + or any TCP based, non-dynamic host). + + In previous behaviour there was special handling for transport=tcp|tls + whereby a peer would match during the first pass if the utilized + transport was TCP|TLS (and the peer allowed that specific transport). + + This behaviour was wrong, or dubious at best. Consider two dynamic tcp + peers, both registering from the same IP (NAT), in this case either peer + could match for connections from an IP. It's also this behaviour that + prevented SIP guests over tcp. + + The above referenced commit removed this behaviour, but kept applying + the SIP_INSECURE_PORT only to WS|WSS|UDP. Since WS and WSS is also TCP + based, the logic here should fall into the TCP category. + + This patch updates things such that the previously non-explicit (TCP + behaviour) transport test gets performed explicitly (ie, matched peer + must allow for the used transport), as well as the indeterministic + source-port nature of the TCP protocol is taken into account. The new + match algorithm now looks like: + + 1. As per previous behaviour, IP address is matched first. + + 2. Explicit filter with respect to transport protocol, previous + behaviour was semi-implied in the test for TCP pure IP match - this now + made explicit. + + 3. During first pass (without SIP_INSECURE_PORT), always match on port. + + 4. If doing UDP, match if matched against peer also has + SIP_INSECURE_PORT, else don't match. + + 5. Match if not a dynamic host (for non-UDP protocols) + + 6. Don't match if this is WS|WSS, or we can't trust the Contact address + (presumably due to NAT) + + 7. Match (we have a valid Contact thus if the IP matches we have no + choice, this will likely only apply to non-NAT). + + To logic-test this we need a few different scenarios. Towards this end, + I work with a set number of peers defined in sip.conf: + + [peer1] + host=1.1.1.1 + transport=tcp + + [peer2] + host=1.1.1.1 + transport=udp + + [peer3] + host=1.1.1.1 + port=5061 + insecure=port + transport=udp + + [peer4] + host=1.1.1.2 + transport=udp,tcp + + [peer5] + host=dynamic + transport=udp,tcp + + Test cases for UDP: + + 1 - incoming UDP request from 1.1.1.1: + - previous: + - pass 1: + * peer1 or peer2 if from port 5060 (indeterminate, depends on peer + ordering) + * peer3 if from port 5061 + * peer5 if registered from 1.1.1.1 and source port matches + - pass 2: + * peer3 + - current: as per previous. + - new: + - pass 1: + * peer2 if from port 5060 + * peer3 if from port 5061 + * peer5 if registered from 1.1.1.1 and source port matches + - pass 2: + * peer3 + + 2 - incoming UDP request from 1.1.1.2: + - previous: + - pass 1: + * peer5 if registered from 1.1.1.2 and port matches + * peer4 if source port is 5060 + - pass 2: + * no match (guest) + - current: as previous. + - new as previous (with the variation that if peer5 didn't have udp as + allowed transport it would not match peer5 whereas previous + and current code could). + + 3 - incoming UDP request from anywhere else: + - previous: + - pass 1: + * peer5 if registered from that address and source port matches. + - pass 2: + * peer5 if insecure=port is additionally set. + * no match (guest) + - current - as per previous + - new - as per previous + + Test cases for TCP based transports: + + 4 - incoming TCP request from 1.1.1.1 + - previous: + - pass 1 (indeterministic, depends on ordering of peers in memory): + * peer1; or + * peer5 if peer5 registered from 1.1.1.1 (irrespective of source port); or + * peer2 if the source port happens to be 5060; or + * peer3 if the source port happens to be 5061. + - pass 2: cannot happen since pass 1 will always find a peer. + - current: + - pass 1: + * peer1 or peer2 if from source port 5060 + * peer3 if from source port 5060 + * peer5 if registered as 1.1.1.1 and source port matches + - pass 2: + * no match (guest) + - new: + - pass 1: + * peer 1 if from port 5060 + * peer 5 if registered and source port matches + - pass 2: + * peer 1 + + 5 - incoming TCP request from 1.1.1.2 + - previous (indeterminate, depends on ordering): + - pass 1: + * peer4; or + * peer5 if peer5 registered from 1.1.1.2 + - pass 2: cannot happen since pass 1 will always find a peer. + - current: + - pass 1: + * peer4 if source port is 5060 + * peer5 if peer5 registered as 1.1.1.2 and source port matches + - pass 2: + * no match (guest). + - new: + - pass 1: + * peer4 if source port is 5060 + * peer5 if peer5 registered as 1.1.1.2 and source port matches + - pass 2: + * peer4 + + 6 - incoming TCP request from anywhere else: + - previous: + - pass 1: + * peer5 if registered from that address + - pass 2: cannot happen since pass 1 will always find a peer. + - current: + - pass 1: + * peer5 if registered from that address and port matches. + - pass 2: + * no match (guest) + - new: as per current. + + It should be noted the test cases don't make explicit mention of TLS, WS + or WSS. WS and WSS previously followed UDP semantics, they will now + enforce source port matching. TLS follow TCP semantics. + + The previous commit specifically tried to address test-case 6, but broke + test-cases 4 and 5 in the process. + + ASTERISK-27881 #close + + Change-Id: I61a9804e4feba9c7224c481f7a10bf7eb7c7f2a2 + +2018-08-20 07:23 +0000 [d84de695ed] Jaco Kroon + + * AMI: be less verbose when adding HTTP headers to AMI/HTTP messages. + + All HTTP/AMI message headers are being sent to the verbose channel. + There are multiple places this is happening. Consolidate the loop into + a function. Drop the debug/verbose message. + + Convert to using ast_asprintf to perform the length calculation, memory + allocation and snprintf all in one step. + + Change-Id: Ic45e673fde05bd544be95ad5cdbc69518207c1a1 + +2018-08-22 10:50 +0000 [4188e7d6dd] Matthew Fredrickson + + * sample_configs: noload res_hep.so by default + + Change disables loading of res_hep.so in default installation. Loading + res_hep has a performance impact whether it's used or not. This disables + loading of it in sample config files. + + Change-Id: I5ec150cf941634fabc72973e5bf1a965cb0ef9d0 + (cherry picked from commit c8bacd45f17d2ae6f6d05c8cff538dd651f683a6) + +2018-08-23 06:57 +0000 [595e358761] Florian Floimair + + * alembic: increase uri column size + + When mobile SIP clients register with Asterisk that use some sort of + push notifications, the URI can get quite lengthy due to the + additional push-service annotations (things like tokens, pn-type, etc.) + contained in it. + + ASTERISK-28022 #close + + Change-Id: I6c55013bafe79f7e7a1fb6722d2558f553709f2e + +2018-08-21 13:50 +0000 [4b88cb383d] Sean Bright + + * app_queue: Silence GCC 8 compiler warning + + I'm only seeing an error in 14+, so I assume it is due to different + compiler options: + + app_queue.c: In function ‘handle_queue_add_member’: + app_queue.c:10234:19: error: ‘%d’ directive writing between 1 and 11 + bytes into a region of size 3 [-Werror=format-overflow=] + sprintf(num, "%d", state); + ^~ + app_queue.c:10234:18: note: directive argument in the range + [-2147483648, 99] + sprintf(num, "%d", state); + ^~~~ + + Compiler: gcc version 8.0.1 20180414 (experimental) + [trunk revision 259383] (Ubuntu 8-20180414-1ubuntu2) + + Change-Id: I18577590da46829c1ea7d8b82e41d69f105baa10 + +2018-08-20 11:23 +0000 [fb2f242c49] Richard Mudgett + + * AMI: Remove docs for nonexistent AMI ContactStatus event headers + + Change-Id: I5736965c64c44338f7330e85a24bb46818607f19 + +2018-08-06 06:22 +0000 [b9cd4c6d92] Joshua Colp + + * res_pjsip: Reduce processing when a Contact is updated. + + When a Contact is updated the only material change that qualify + support cares about is the underlying configuration for the AOR. + In this case we will update things with the new AOR information but + otherwise the callback to indicate the Contact has changed can be + ignored. + + This is because it is only when a Contact is added or deleted that + material changes occur within the qualify support. An update can't + change the URI since it would result in a new Contact so it can be + ignored. + + Change-Id: I2f97ebfa79969a36a97bb7b9afd5b6268cf1a07d + +2018-08-10 19:28 +0000 [236826a111] Richard Mudgett + + * res_pjsip_t38.c: Fix crash if already saw a final T.38 reINVITE response. + + We were still getting crashes after the first fix. Somehow we receive a + non-2xx final response before we get a 200 final response. With the + failure response we had already cleaned up and destroyed some data + structures. When the unexpected 200 response comes in we crash. + + * Add protection code to prevent processing another final T.38 reINVITE + response. + + ASTERISK-27944 + + Change-Id: I8b5baba8d07fe4d63f0d7d05d3eb9a3d27d40a74 + +2018-08-09 18:46 +0000 [19298141cf] Richard Mudgett + + * res_sorcery_realtime.c: Fix unqualified fetch warning. + + The allow_unqualified_fetch option for the sorcery realtime backend + blocked actually fetching all rows when the option is set to warn. + + * Made issue a warning and actually do the request when + allow_unqualified_fetch=warn is set. + + Change-Id: I74456c80a03a62dce66fc3dc3cb0cf2351ac4312 + +2018-06-11 00:07 +0000 [f6c1d94d91] Kirsty Tyerman + + * pbx_dundi: Added IPv6 support for dundi + + Change includes move to netsock2 library. + + ASTERISK-27164 + Reported-by: Adam Secombe + + Change-Id: Ia9e8dc3d153de7a291dbda4bd87fc827dd2bb846 + +2018-08-15 21:31 +0000 [4e43823d19] Richard Mudgett + + * pbx_dundi.c: Misc memory management fixes when destroying peers + + * In destroy_peer(), fixed memory leaks of lookup history strings and + qualify transactions when destroying peers. + + * In destroy_peer(), fixed leaving the registerexpire scheduled callback + active when a peer is destroyed on a reload. The reload marks and sweeps + peers so any peers not explicitly configured get destroyed. Peers created + dynamically from the '*' peer will not exist until they re-register after + the reload. These destroyed peers caused memory corruption when the + registerexpire timer expired. + + * Made build_peer() not schedule any callbacks on the '*' peer + (empty_eid). It is a special peer that is cloned to dynamically created + peers so it doesn't actually get involved in any message transactions. + + * Made do_register_expire() remove the dundi/dpeers AstDB entry when a + peer registration expires. + + * Fix deep_copy_peer() to not copy some things that cannot be copied to + the cloned peer structure. Timers, message transactions, and lookup + history are specific to a peer instance. + + * Made set_config() lock around processing the mappings configuration. + + * Reordered unload_module() to handle load_module() declining the load due + to error. + + Change-Id: Ib846b2b60d027f3a2c2b3b563d9a83a357dce1d6 + +2018-08-15 23:49 +0000 [857926d197] Richard Mudgett + + * pbx_dundi.c: Handle thread shutdown better. + + Change-Id: Id52f99bd6a948fe6dd82acc0a28b2447a224fe87 + +2018-08-15 18:14 +0000 [111e73678e] Richard Mudgett + + * pbx_dundi: Fix debug frame decode string. + + * Fixed a typo in the name of the REGREQ frame decode string array. + * Fixed off by one range check indexing into the frame decode string + array. + * Removed some unneeded casts associated with the decode string array. + + Change-Id: I77435e81cd284bab6209d545919bf236ad7933c2 + +2018-08-16 16:21 +0000 [a7ace944ae] Richard Mudgett + + * pbx_dundi: Update sample config documentation. + + Change-Id: I33d0ad0611c2124ca3440f0f811fa0f45e4e2849 + +2018-08-15 14:44 +0000 [0874d5b316] Richard Mudgett + + * res_rtp_asterisk.c: Fix unused variable warnings + + Compiling without SRTP support installed resulted in some unused variable + warnings. These warnings also showed that the srtp variable was obtained + and passed around some functions but not really used even when a system + has SRTP installed. + + Change-Id: I6daad34be3e89b19adef6e2fbe738018975155fc + +2018-08-16 13:51 +0000 [df78227e4a] George Joseph + + * CI: Fixup for non-13 branches + + Change-Id: I5e1d4a09e58b92b541bc8ed6f9e10e54c4e5101f + +2018-08-16 13:28 +0000 [4ca959c72c] George Joseph + + * CI: Final version of setting correct gerrit creds + + Change-Id: I7729ecceedceb12f52bf18dae259846aa1d993b3 + +2018-08-16 12:08 +0000 [33a5b8ccaf] George Joseph + + * CI: Add https credentials to gerrit checkouts + + If the review to be tested is in a project with restricted access, + we need to use the jenkins user's gerrit https credentials when we + do the checkout or the checkout will fail. + + Change-Id: I9dc9994763c5ebfeb9f1cff60fb53f6902b7fd5f + +2018-08-09 02:34 +0000 [0d4bde84d1] Torrey Searle + + * res/res_pjsip_sdp_rtp: put rtcp-mux in answer only if offered + + If in the initial sdp the caller doesn't include the line + a=rtcp-mux + + Then asterisk shoud not include rtcp-mux in the response regardless + of rtcp-mux being enabled on the endpoint + + ASTERISK-28007 #close + + Change-Id: I58e9b9f40a139afc0da5de41906cc608fb62adc7 + +2018-08-15 14:49 +0000 [167efe3a47] Corey Farrell + + * res_resolver_unbound: Fix leak of config nameserver strings. + + Change-Id: I3f396316bb40d1ae6e91f5f688042420f1a540ed + +2018-08-15 13:51 +0000 [72dbc9fb70] Corey Farrell + + * res_pjsip: Resolve transport management leak at shutdown. + + Cleanup idle check scheduled events at shutdown. + + Change-Id: I61bfbb56bac69fe840c3242927d31ff3593be461 + +2018-08-15 11:12 +0000 [6e0f4a2127] Corey Farrell + + * res_pjsip: Fix leak in pjsip_options. + + sip_options_get_endpoint_state_compositor_state leaked a reference to + the first available endpoint state compositor that was found. + + Change-Id: Idb6be19f7219b6eed1dfb19c1e740dd40cb3fdc7 + +2018-08-15 11:31 +0000 [b370482786] Corey Farrell + + * res_odbc: Allow unload at shutdown. + + This makes it possible for REF_DEBUG to report no leaks when loading + res_odbc. + + Change-Id: I1a3dea786bd6e7f4820a6dd5cbaa197fa783ce93 + +2018-07-31 23:54 +0000 [d61a8791b5] Corey Farrell + + * Build System: Improve ccache matching for different menuselect options. + + Changing any Menuselect option in the `Compiler Flags` section causes a + full rebuild of the Asterisk source tree. Every enabled option causes + a #define to be added to buildopts.h, thus breaking ccache caching for + every source file that includes "asterisk.h". In most cases each option + only applies to one or two files. Now we only define those options for + the specific sources which use them, this causes much better cache + matching when working with multiple builds. For example testing code + with an without MALLOC_DEBUG will now use just over half the ccache + size, only main/astmm.o will have two builds cached instead of every + file. + + Reorder main/Makefile so _ASTCFLAGS set on specific object files are all + together, sorted by filename. Stop adding -DMALLOC_DEBUG to CFLAGS of + bundled pjproject, this define is no longer used by any header so only + serves to break cache. + + The only code change is a slight adjustment to how main/astmm.c is + initialized. Initialization functions always exist so main/asterisk.c + can call them unconditionally. Additionally rename the astmm + initialization functions so they are not exported. + + Change-Id: Ie2085237a964f6e1e6fff55ed046e2afff83c027 + +2018-08-14 11:55 +0000 [0e4f5f5189] Richard Mudgett + + * contrib/scripts: Make astgenkey executable + + Change-Id: I11641d65592536dea9cbca5aa94a24c25d24dd5f + +2018-08-14 07:29 +0000 [56c1285b8a] Joshua Colp + + * res_pjsip_caller_id: Add "party" parameter to RPID header. + + This change adds the "party" parameter to the Remote-Party-ID header + which indicates which party the header information is applicable + to. In Asterisk this is determined on whether we are the calling + or called party. This is added to improve interoperability with some + implementations. + + ASTERISK-28006 + + Change-Id: I1eec3e377ffff8633b5c1dd59a05e9533122cfca + +2018-07-19 22:28 +0000 [3bf968470b] Corey Farrell + + * CI: Add support for coverage processing. + + Enable coverage with `./tests/CI/buildAsterisk.sh --coverage`. This + will cause Asterisk to be compiled with coverage support. It also + initializes 'before' coverage data for all sources. Accept + --tested-only to disable modules which are not run by any test. + Enabling coverage also sets tested-only true by default. To build + everything with coverage enabled use `--coverage --tested-only=0`. + + ./tests/CI/processCoverage.sh is used to process the coverage and + generate HTML reports. + + Fix utils/check_expr2 which failed to compiled with coverage enabled. + + Add status output 5 times per stage of astobj2_test_perf to ensure + remote CLI does not timeout when compiled with coverage. Remote CLI + disconnects if no output is received for 60 seconds. When coverage is + enabled it takes about 70 seconds for my laptop to run the stages of + this test, so with the change a message is printed every 14 seconds. + + Change-Id: I890f7d5665087426ad7d3e363187691b9afc2222 + +2018-08-07 10:57 +0000 [a46fcaca7b] Ben Ford + + * res_pjsip/rtp: No joint capabilities between streams. + + When a conference contained a mixture of audio/video and audio-only + users, a NOTICE message would pop up stating there are no joint + capabilities between streams. This happens because streams can never be + removed, but they can be in a REMOVED state. If we have the scenario + where user A joins with audio/video, user B joins with audio-only, and + user C joins with audio/video, then user A leaves, the message would + be triggered. That removed stream is still in the SDP, but Asterisk + would pass it through, causing it to be seen as a ulaw stream. A check + has been added for removed streams, setting their status to REMOVED when + handling negotiated SDPs. + + Also addressed an issue where user A joins, then user B joins but does + not receive video until much later. Full frames were not being sent, + causing some PLI from the browser. Because the video was flowing in one + direction, the browser sets the SSRC to 1, but Asterisk was dropping the + PLI because of that. Added a check to see if the SSRC is 1 or not, which + sends full frames and allows video to flow between user A and user B. + This should only happen when dealing with PSFB or FUR, and in the case + of PSFB, only for PLI. + + ASTERISK-27398 + + Change-Id: I26e7c6f101bc119549eeca406b5bcd25ad8ebc5e + +2018-08-12 11:04 +0000 [fce68efbbe] Ivan Poddubny + + * app_queue: set QUEUESTATUS to LEAVEEMPTY instead of CONTINUE + + When a call leaves a queue on leaveempty condition, QUEUESTATUS + must be set to LEAVEEMPTY, no matter whether Queue was executed with or + without the "c" (continue) option. + + The regression was introduced in the fix for ASTERISK_25665. + The following fix (ASTERISK_27065) was incomplete, as QUEUESTATUS was + overwritten in case when "c" is set, regardless of what was the cause + for leaving the queue. + + ASTERISK-27973 #close + Reported-by: Valentin Safonov + + Change-Id: Iec013fe6a26a4e825ca572a1dda4f3cee5f6f80c + +2018-08-09 15:25 +0000 [661273a078] Corey Farrell + + * Sample configs: Fix pjsip.conf syntax error. + + It is valid for a config file to be empty or contain only comments, but + not valid for a config value to be set when no uncommented context + exists. This caused an error to be loged numerous times during start + when loading the default pjsip.conf. + + Change-Id: Icf3b0d69b4ecb6e935eecd43c99ed8b32a5a1cf6 + +2018-08-06 12:19 +0000 [eb87a98a1a] Richard Mudgett + + * res_pjsip.h: Fix doxygen comments. + + Change-Id: I9cf97bdc756012d1f552ab007f4aa85e0ddb4e62 + +2018-08-06 06:36 +0000 [5030756bfa] Joshua Colp + + * stasis: Reduce calculation of stasis message type hash. + + When the stasis cache is used a hash is calculated for + retrieving or inserting messages. This change calculates + a hash when the message type is initialized that is then + used each time needed. This ensures that the hash is + calculated only once for the message type. + + Change-Id: I4fe6bfdafb55bf5c322dd313fbd8c32cce73ef37 + +2018-07-30 07:49 +0000 [04974a0ca2] Alexander Traud + + * pjproject_bundled: Fix for Solaris builds. Do not undef s_addr. + + The authors of PJProject undef s_addr because of some issue in Microsoft + Windows. However in Oracle Solaris, s_addr is not a structure member, but + defined to map to the real structure member. + + Updates the patch from ASTERISK_20366 + + ASTERISK-27997 + + Change-Id: I8223026d4d54e2a46521085fcc94bfa6ebe35b11 + +2018-08-03 15:59 +0000 [99a0586ec1] Richard Mudgett + + * res_pjsip: Make pjlib.h consistently included. + + * Don't include pjlib.h twice in res_pjsip.h + * Consistently use #include <> form for pjproject includes. + (pjsip.h and pjlib.h) + + Change-Id: I3f7b42044840de64edf7e9d7695cb60c45990dc7 + +2018-08-02 14:37 +0000 [523b7b2ffc] Salah Ahmed + + * dialplan_functions: wrong srtp use status report of a dialplan function + + If asterisk offer an endpoint with SRTP and that endpoint respond + with non srtp, in that case channel(rtp,secure,audio) reply wrong + status. + + Why delete flag AST_SRTP_CRYPTO_OFFER_OK while check identical remote_key: + Currently this flag has being set redundantly. In either case identical + or different remote_key this flag has being set. So if we + don't set it while we receive identical remote_key or non SRTP SDP + response then we can take decision of srtp use by using that flag. + + ASTERISK-27999 + + Change-Id: I29dc2843cf4e5ae2604301cb4ff258f1822dc2d7 + +2018-07-30 06:05 +0000 [e9d41572b3] Alexander Traud + + * pjproject_bundled: Find shared libraries in root --with-ssl=PATH. + + The script configure from Teluu expects shared libraries (.so) in a subfolder + called 'lib', when --with-xyz=PATH is specified. However for OpenSSL, the + default location is the root of the source folder = PATH. Furthermore, Asterisk + supports both, 'lib' and root. For consistency and because Asterisk is using + (only) OpenSSL in PJProject, it is enhanced to support both locations, just + like Asterisk. + + ASTERISK-27995 + + Change-Id: I8eb916a88b6b8c22e29bb40bee8faaca6c73406f + +2018-08-01 09:45 +0000 [1e837e13f5] Joshua Colp + + * res_pjsip_registrar: Improve performance on inbound handling. + + This change removes a sorcery lookup for retrieving all + contacts at the end of the registration process by keeping + track of the contacts that are added/updated/deleted. + + This ensures at the end of the process the container of + contacts we have is the current state. + + Pool usage has also been reduced by allocating one for + usage throughout the handling of a REGISTER and resetting + it to a clean state. This ensures that in most cases + we allocate once and just reuse it. + + ASTERISK-28001 + + Change-Id: I1a78b2d46f9a2045dbbff1a3fd6dba84b612b3cb + +2018-07-17 07:13 +0000 [e818925a58] Torrey Searle + + * thirdparty/pjproject: fix deadlock in response retransmissions + + The tdata containing the response can be shared by both the dialog + object and the tsx object. In order to prevent the race condition + between the tsx retransmission and the dialog sending a response, + clone the tdata before modifying it for the dialog send response. + + ASTERISK-27966 #close + + Change-Id: Ic381004a3a212fe1d8eca0e707fe09dba4a6ab4e + +2018-07-31 11:24 +0000 [20b53b5cee] Richard Mudgett + + * pjsip_wizard.conf.sample: Update remote_hosts description. + + Remove the note that SRV records are not supported as that is no longer + true. + + ASTERISK-27993 + + Change-Id: Id0dd6ef40e52702be9727a2b6122216cb00bb4ca + +2018-07-27 13:23 +0000 [914b9e1934] George Joseph + + * CI: Add optional uninstall step before installing asterisk + + Change-Id: I7dedf1e925eafc3a0adf01dd9dfbe44eb642aab7 + +2018-07-28 11:49 +0000 [93d1c34efe] Alexander Traud + + * BuildSystem: Enable ncurses for menuselect in Solaris 11. + + The check for the library ncurses should use not use the header but + , because on some platforms is not a drop-in replacement + for : For example in Solaris, the symbol initscr is a typedef in + to a symbol which does not exist in the library ncurses (initscr32). + Simply use when you link to ncurses. + + Furthermore in Solaris, the header is in a subdirectory + /usr/include/ncurses and not available via pkg-config. + + ASTERISK-15331 + ASTERISK-14935 + ASTERISK-12382 + ASTERISK-9107 + + Change-Id: Ife367776b0ccf17d3fefed868245376bfb93745d + +2018-07-28 08:00 +0000 [ee9794d741] Joshua Colp + + * res_pjsip_pubsub: Use ast_true for "prune_on_boot". + + Change-Id: Iedec4e7390b3e821987681da24d0298632b9873d + +2018-07-28 07:39 +0000 [c10b3ccd5f] Alexander Traud + + * BuildSystem: Enable Jansson in Solaris 11. + + In Solaris, the header is in /usr/include/jansson. To find + Jansson even in such a subdirectory, the tool pkg-config is queried via + AST_PKG_CONFIG_CHECK. For those platforms, which do not list Jansson via + pkg-config, the previous check remains and is executed thereafter. + + Because the check for the NetBSD Editline library uses the tool pkg-config + the code of PKG_PROG_PKG_CONFIG must be used. Because that check happens + earlier than Jansson, it must be placed in front of that. + + ASTERISK-27991 + + Change-Id: I69ea0f379f87a50049654b2487c76ee1c04fa53a + +2018-07-24 13:44 +0000 [32ce8e5cf3] Richard Mudgett + + * res_pjsip_endpoint_identifier_ip.c: Added regex support to match_header + + This patch adds regular expression support to make the identify section's + match_header option more useful when attempting to match complex headers + like the 'To' or 'From' headers. The 'From' header has variable + components such as the tag parameter that you cannot predict. To specify + a regular expression put slashes around the regular expression in place of + the header value. + + [identify-alice] + type=identify + endpoint=alice + match_header=From: // + + * Added regex support to match_header so you could match a 'To' header + among other complex headers. + + Fixed reported crashes when trying to match special headers like 'Contact'. + The identify section's match_header method used code that assumed you were + matching a generic header. Any other type of header could cause a crash + if the header structure variant did not match the generic header enough. + + * Made use code that will work for any header type instead of code + specific to generic headers. + + Other fixes while in the area: + + * Made check all headers of the requested name. + * Added some more sanity checks to the configured identify matching + options when applying the configuration. + + ASTERISK-27548 + + Change-Id: I27dfd4ff5e2259b906640e3c330681b76b4ed1f1 + +2018-07-27 10:46 +0000 [59f53514ce] Joshua Colp + + * res_pjsip_pubsub: Treat "prune_on_boot" as a yes / no. + + The alembic for the PJSIP subscription persistence table has the + "prune_on_boot" field as a boolean. While in Asterisk we are + tolerant of many different definitions of true and false in the + database we only accept "yes" and "no". This change makes the + field treated as a yes/no instead of an integer, thus storing + "yes" and "no" instead of "1" and "0". + + Change-Id: Ic8b9211b36babefe78f70def6828a135a6ae7ab6 + +2018-07-27 08:26 +0000 [8da81a208f] Alexander Traud + + * res_rtp_asterisk: In Developer Mode, do not require OpenSSL. + + OpenSSL is an optional external library and should stay optional even when + Developer Mode is configured. + + ASTERISK-27990 + + Change-Id: Ia68a4cd5474b26d45e0f43b04032ad598022853b + +2018-07-26 18:54 +0000 [e097dca4d7] George Joseph + + * CI: Fix placement of job summary statments + + Change-Id: Iace19e718f4e8fb48eb7dc9f98af53b115cc45f3 + +2018-07-26 12:52 +0000 [e5de8a70f8] Corey Farrell + + * loader: Process dependencies for built-in modules. + + With the new module loader it was missed that built-in modules never + parsed dependencies from mod->info into vectors of mod. This caused + manager to be initialized before acl (named_acl). If manager.conf + used any named ACL's they would not be found and result in no ACL being + applied to the AMI user. + + In addition to the manager ACL fix this adds "extconfig" to all builtin + modules which support realtime configuration. This only matters if one + of the builtin modules is configured with 'preload', depending on + "extconfig" will cause config.c to automatically be initialize during + the preload stage. + + Change-Id: I482ed6bca6c1064b05bb538d7861cd7a4f02d9fc + +2018-07-18 09:32 +0000 [d3809d61cb] Emmanuel BUU + + * res_rtp_asterisk: Avoid merging command and regular T.140 text packets + + When realtime text packets are to be sent, the text is accumulated in a + buffer and sent regularly by a timer. It can happen that commands such as + a backspace, CR, or LF get merged with regular text. This breaks some + UAs. + + The proposed change: + * We test if the current packet contains a command. If so we send the + buffer immediately. + * We test if the buffer contained a command. If so we send the buffer + immediately. + * We accumulate the text (or the command) in the buffer. + + ASTERISK-27970 + + Change-Id: Ifbe993311410fa855cb8aa4a12084db75f413462 + +2018-07-26 11:34 +0000 [798f049e82] George Joseph + + * CI: Add docker info to job summary + + Change-Id: I45d52005a9b692ad303c11792f226ace1e449901 + +2018-07-23 13:49 +0000 [7578881b3d] Corey Farrell + + * Build System: Create 'make install-configs' target. + + This target requires specifying CONFIG_SRC=path_to_configs. This can be + used to install custom configs for the Asterisk build while still + performing directory replacements on asterisk.conf. + + Modify internal INSTALL_CONFIGS so first argument requires full path to + the config sources relative to Asterisk source root. + + Change-Id: Idcd841df3c8d5bfe23d566bb9e2e448e9df4f8ab + +2018-07-25 15:33 +0000 [8ea13d62cd] Kevin Harwell + + * json.c: improve ast_json_to_ast_variables performance + + When converting from a json object to an ast variables list the conversion + algorithm was doing a complete traversal of the entire variables list for + every item appended from the json structure. + + This patch makes it so the list is no longer traversed for each new ast + variable being appended. + + Change-Id: I8bf496a1fc449485150d6db36bfc0354934a3977 + +2018-07-25 05:32 +0000 [e5c0ac6a64] Joshua Colp + + * devicestate: Don't create topic when change isn't cached. + + When publishing a device state the change can be marked as being + cachable or not. If it is not cached the change is just published + to all interested and not stored away for later query. This was not + fully taken into account when publishing in stasis. The act of + publishing would create a topic for the device even if it may be + ephemeral. + + This change makes it so messages which are not cached won't create + a topic for the device. If a topic does already exist it will be + published to but otherwise the change will only be published to + the device state all topic. + + ASTERISK-27591 + + Change-Id: I18da0e8cbb18e79602e731020c46ba4101e59f0a + +2018-07-25 10:20 +0000 [93997f9698] George Joseph + + * CI: Explicitly pass BRANCH_NAME to buildAsterisk and installAsterisk + + Change-Id: I652f4a0ea5107c778e27a78bccb67b18b0c4e087 + +2018-07-24 13:29 +0000 [0baf660bde] George Joseph + + * CI: Add options to initialize and cleanup database to runTestsuite.sh + + Change-Id: I352333233bab5377723bf37d490ba84fc55bc853 + +2018-07-25 09:07 +0000 [74cbeabb97] Corey Farrell + + * CI: Do not `mkdir 2`. + + Change-Id: Ib7377d26a6c98b38bad463f47c84f1875ac84eb7 + +2018-07-25 07:34 +0000 [adf3c569a2] Corey Farrell + + * Build System: Silence build of bundled jansson. + + Change-Id: I7392c79c0173057f5378010bf1fe65e300e8fc56 + +2018-07-25 07:13 +0000 [e4b0f09bcc] George Joseph + + * CI: RefDebug: Fix reference to testsuite URL + + Change-Id: I0ee41d95a87f0d97b01f2757012b846bcfe6443d + +2018-07-24 14:28 +0000 [5537048d60] Corey Farrell + + * Build System: Fix bundled jansson install. + + Update the bundled jansson Makefile to do nothing during Asterisk + install, use a target that is not phony to initiate the jansson make and + install. + + Change-Id: I7643cc3d39af9feba8fc0da676b646efc5f8b3bb + +2018-07-24 10:43 +0000 [9f3620a578] Corey Farrell + + * CI: Use bundled jansson if needed. + + Use pkg-config to determine if jansson is at least 2.11, enabled bundled + version otherwise. + + Change-Id: Ib555a8b72ff6f6925f9280ef035caa0b91ca4bd2 + +2018-07-24 04:57 +0000 [1f46e2e91c] Florian Floimair + + * res_pjsip: Change log message from error to warning for valid use cases + + If a SIP MESSAGE is triggered for an endpoint that is currently not registered + - and therefore has no valid contact associated - an error message was logged. + Since this is a valid request in a valid use cases this is now changed to a + warning, as discussed with Matt Fredrickson on the asterisk-dev mailing list. + + Change-Id: I55eb62d2712818a58c7532119dec288bd98cf0c0 + +2018-07-24 05:39 +0000 [8550fad21a] George Joseph + + * CI: Add --privileged flag to docker options + + Change-Id: If92d55f15306e55dd7091ac3c47b13ebbbb03488 + +2018-07-24 05:22 +0000 [f2580d037f] George Joseph + + * CI: Set correct user:group when publishing docs + + Change-Id: Ibabeb9ac730d9755cf54318d0da74771c939b86b + +2018-07-23 12:21 +0000 [35d06e46ae] Richard Mudgett + + * core: AST_DEVMODE no longer affects ABI. + + Remove AST_DEVMODE from the AST_BUILDOPTS list and the AST_BUILDOPTS_SUM + calculation as it no longer affects API/ABI compatibility. + + Change-Id: Id5bd6dfade173a53b3a49f715586b86e3fb24acb + +2018-07-23 10:23 +0000 [09b258fd69] Corey Farrell + + * CI: Split --test-command argument. + + The --test-command argument has now been split, unit tests now use + `--unittest-command` and the testsuite uses --testsuite-command. + + This will make it easier to create a script which run everything by + forwarding the same arguments to all CI scripts. + + Change-Id: Ia54aa4848eaffbdf13175fcda40fc0b23080ad71 + +2018-07-20 06:20 +0000 [460ef41f7a] George Joseph + + * xmldoc.c: Fix dump of xml document + + The "xmldoc dump" cli command was simply concatenating xml documents + into the output file. The resulting file had multiple "xml" + processing instructions and multiple root elements which is illegal. + Normally this isn't an issue because Asterisk has only 1 main xml + documentation file but codec_opus has its own file so if it's + downloaded and you do "xmldoc dump", the result is invalid. + + * Added 2 new functions to xml.c: + ast_xml_copy_node_list creates a copy of a list of children. + ast_xml_add_child_list adds a list to an existing list. + + * Modified handle_dump_docs to create a new output document and + add to it the children from each input file. It then dumps the + new document to the output file. + + Change-Id: I3f182d38c75776aee76413dadd2d489d54a85c07 + +2018-07-21 11:58 +0000 [fd1f74af40] Corey Farrell + + * CI: Fix mkdir CACHE_DIR. + + Change-Id: Ic9f9a61e230047836c836206731f8ff7eb3538c9 + +2018-07-21 11:22 +0000 [9b3267641f] Corey Farrell + + * build_tools/make_version: Get MAINLINE_BRANCH from .gitreview. + + Use .gitreview defaultbranch setting to determine the mainline branch. + This allows the script to be used against other directories which might + not be on the same defaultbranch. This can be used by CI scripts to + report the testsuite version being used: + ./build_tools/make_version ${TESTSUITE_DIR} + + Change-Id: Ifdad4a9d8a26138c41bc6b630ecc3e34ea1c2758 + +2018-07-22 10:41 +0000 [0f999a834f] Joshua Colp + + * sched: Make ABI compatible between dev mode and non-dev mode. + + In the past there was an assertion in the ast_sched_del function + and in order to ensure it was useful the calling function name, + line number, and filename had to be passed in. This cause the ABI + to be different between dev mode and non-dev mode. + + This assertion is no longer present so the special logic can be + removed to make it the same between them both. + + Change-Id: Icbc69c801e357d7004efc5cf2ab936d9b83b6ab8 + +2018-07-20 15:52 +0000 [aea0a0294d] Richard Mudgett + + * asterisk.c: Update displayed copyright year for v16 release. + + Change-Id: I60622731d928ee9506b1d28934095f0dc3e5306e + +2018-07-16 15:08 +0000 [d2dace81d4] Corey Farrell + + * Enable bundling of jansson, require 2.11. + + Change-Id: Ib3111b151d37cbda40768cf2a8a9c6cf6c5c7cbd + +2018-07-20 09:25 +0000 [c8bd8f6ce9] Corey Farrell + + * CI: Fix logger.conf for unit tests. + + Change-Id: Idea59d60eab20105de50b34f0f0d506e6ef55d5c + +2018-07-19 10:34 +0000 [0f82db82cb] George Joseph + + * CI: Add wiki doc publish to periodics + + Change-Id: I29ba26134e5083bc6788ede235f1a5d4383c148a + +2018-07-20 06:54 +0000 [a2a3ad2438] Joshua Colp + + * res_pjsip: Update default keepalive interval to 90 seconds. + + A change recently went in which disabled the built-in PJSIP + keepalive. This defaulted to 90 seconds and kept TCP/TLS + connections alive. Disabling this functionality has resulted + in a behavior change of not doing keepalives by default resulting + in TCP/TLS connections dropping for some people. + + This change makes our default keepalive interval 90 seconds + to match the previous behavior and preserve it. + + ASTERISK-27978 + + Change-Id: Ibd9a45f3cbe5d9bb6d2161268696645ff781b1d6 + +2018-07-19 16:17 +0000 [dbffcdc561] Richard Mudgett + + * res_pjsip: Update endpoint transport option documentation. + + Change-Id: I5394fdff6a296efc8e1695a156e616acd932ae52 + +2018-07-19 13:27 +0000 [709b795cb0] Richard Mudgett + + * pjsip_resolver.c: Use replacement function + + * Use the replacement function ast_sip_push_task_wait_servant() instead of + the deprecated ast_sip_push_task_synchronous(). + + Change-Id: I145b550ba7054640c7faa3b644e63137f505c612 + +2018-07-18 17:13 +0000 [c40412bd13] Corey Farrell + + * contrib: Update systemd README.txt. + + Mention need to compile Asterisk with systemd development package + installed. + + ASTERISK-27968 + + Change-Id: Ib3a973be403c61cbe09572b0f912fb1aa1bff026 + +2018-07-18 14:19 +0000 [0b3bc4852f] Joshua Colp + + * Update mainline version for the 16 branch. + + Change-Id: I4d36277d10335349d83ae218fa10fee99c3e4c14 + +2018-08-08 16:02 +0000 Asterisk Development Team + + * asterisk 16.0.0-rc1 Released. + +2018-07-27 13:23 +0000 [d3789cc420] George Joseph + + * CI: Add optional uninstall step before installing asterisk + + Change-Id: I7dedf1e925eafc3a0adf01dd9dfbe44eb642aab7 + +2018-07-28 08:00 +0000 [89b669a227] Joshua Colp + + * res_pjsip_pubsub: Use ast_true for "prune_on_boot". + + Change-Id: Iedec4e7390b3e821987681da24d0298632b9873d + +2018-07-27 10:46 +0000 [0028db48cc] Joshua Colp + + * res_pjsip_pubsub: Treat "prune_on_boot" as a yes / no. + + The alembic for the PJSIP subscription persistence table has the + "prune_on_boot" field as a boolean. While in Asterisk we are + tolerant of many different definitions of true and false in the + database we only accept "yes" and "no". This change makes the + field treated as a yes/no instead of an integer, thus storing + "yes" and "no" instead of "1" and "0". + + Change-Id: Ic8b9211b36babefe78f70def6828a135a6ae7ab6 + +2018-07-26 18:54 +0000 [24e4e45177] George Joseph + + * CI: Fix placement of job summary statments + + Change-Id: Iace19e718f4e8fb48eb7dc9f98af53b115cc45f3 + +2018-07-26 12:52 +0000 [c384a4cdcd] Corey Farrell + + * loader: Process dependencies for built-in modules. + + With the new module loader it was missed that built-in modules never + parsed dependencies from mod->info into vectors of mod. This caused + manager to be initialized before acl (named_acl). If manager.conf + used any named ACL's they would not be found and result in no ACL being + applied to the AMI user. + + In addition to the manager ACL fix this adds "extconfig" to all builtin + modules which support realtime configuration. This only matters if one + of the builtin modules is configured with 'preload', depending on + "extconfig" will cause config.c to automatically be initialize during + the preload stage. + + Change-Id: I482ed6bca6c1064b05bb538d7861cd7a4f02d9fc + +2018-07-26 11:34 +0000 [9f1041c4d0] George Joseph + + * CI: Add docker info to job summary + + Change-Id: I45d52005a9b692ad303c11792f226ace1e449901 + +2018-07-25 15:33 +0000 [c5761ee58e] Kevin Harwell + + * json.c: improve ast_json_to_ast_variables performance + + When converting from a json object to an ast variables list the conversion + algorithm was doing a complete traversal of the entire variables list for + every item appended from the json structure. + + This patch makes it so the list is no longer traversed for each new ast + variable being appended. + + Change-Id: I8bf496a1fc449485150d6db36bfc0354934a3977 + +2018-07-25 10:20 +0000 [cfd61ba237] George Joseph + + * CI: Explicitly pass BRANCH_NAME to buildAsterisk and installAsterisk + + Change-Id: I652f4a0ea5107c778e27a78bccb67b18b0c4e087 + +2018-07-24 13:29 +0000 [a81870110a] George Joseph + + * CI: Add options to initialize and cleanup database to runTestsuite.sh + + Change-Id: I352333233bab5377723bf37d490ba84fc55bc853 + +2018-07-25 09:07 +0000 [4a01be5c80] Corey Farrell + + * CI: Do not `mkdir 2`. + + Change-Id: Ib7377d26a6c98b38bad463f47c84f1875ac84eb7 + +2018-07-25 07:34 +0000 [e6f2bae0cc] Corey Farrell + + * Build System: Silence build of bundled jansson. + + Change-Id: I7392c79c0173057f5378010bf1fe65e300e8fc56 + +2018-07-25 07:13 +0000 [f1156f0cfd] George Joseph + + * CI: RefDebug: Fix reference to testsuite URL + + Change-Id: I0ee41d95a87f0d97b01f2757012b846bcfe6443d + +2018-07-24 14:28 +0000 [7e99090c9d] Corey Farrell + + * Build System: Fix bundled jansson install. + + Update the bundled jansson Makefile to do nothing during Asterisk + install, use a target that is not phony to initiate the jansson make and + install. + + Change-Id: I7643cc3d39af9feba8fc0da676b646efc5f8b3bb + +2018-07-24 10:43 +0000 [b32adca9b4] Corey Farrell + + * CI: Use bundled jansson if needed. + + Use pkg-config to determine if jansson is at least 2.11, enabled bundled + version otherwise. + + Change-Id: Ib555a8b72ff6f6925f9280ef035caa0b91ca4bd2 + +2018-07-24 05:39 +0000 [e22cbe7c17] George Joseph + + * CI: Add --privileged flag to docker options + + Change-Id: If92d55f15306e55dd7091ac3c47b13ebbbb03488 + +2018-07-24 05:22 +0000 [3509ada06f] George Joseph + + * CI: Set correct user:group when publishing docs + + Change-Id: Ibabeb9ac730d9755cf54318d0da74771c939b86b + +2018-07-23 12:21 +0000 [008d304be2] Richard Mudgett + + * core: AST_DEVMODE no longer affects ABI. + + Remove AST_DEVMODE from the AST_BUILDOPTS list and the AST_BUILDOPTS_SUM + calculation as it no longer affects API/ABI compatibility. + + Change-Id: Id5bd6dfade173a53b3a49f715586b86e3fb24acb + +2018-07-23 10:23 +0000 [5dbbc68311] Corey Farrell + + * CI: Split --test-command argument. + + The --test-command argument has now been split, unit tests now use + `--unittest-command` and the testsuite uses --testsuite-command. + + This will make it easier to create a script which run everything by + forwarding the same arguments to all CI scripts. + + Change-Id: Ia54aa4848eaffbdf13175fcda40fc0b23080ad71 + +2018-07-21 11:58 +0000 [2a13a4344e] Corey Farrell + + * CI: Fix mkdir CACHE_DIR. + + Change-Id: Ic9f9a61e230047836c836206731f8ff7eb3538c9 + +2018-07-22 10:41 +0000 [9742fb07c9] Joshua Colp + + * sched: Make ABI compatible between dev mode and non-dev mode. + + In the past there was an assertion in the ast_sched_del function + and in order to ensure it was useful the calling function name, + line number, and filename had to be passed in. This cause the ABI + to be different between dev mode and non-dev mode. + + This assertion is no longer present so the special logic can be + removed to make it the same between them both. + + Change-Id: Icbc69c801e357d7004efc5cf2ab936d9b83b6ab8 + +2018-07-20 15:52 +0000 [2c51079d05] Richard Mudgett + + * asterisk.c: Update displayed copyright year for v16 release. + + Change-Id: I60622731d928ee9506b1d28934095f0dc3e5306e + +2018-07-16 15:08 +0000 [3cdffa1342] Corey Farrell + + * Enable bundling of jansson, require 2.11. + + Change-Id: Ib3111b151d37cbda40768cf2a8a9c6cf6c5c7cbd + +2018-07-20 09:25 +0000 [136d855f69] Corey Farrell + + * CI: Fix logger.conf for unit tests. + + Change-Id: Idea59d60eab20105de50b34f0f0d506e6ef55d5c + +2018-07-19 10:34 +0000 [0c1513d8a0] George Joseph + + * CI: Add wiki doc publish to periodics + + Change-Id: I29ba26134e5083bc6788ede235f1a5d4383c148a + +2018-07-20 06:20 +0000 [61a974ed4e] George Joseph + + * xmldoc.c: Fix dump of xml document + + The "xmldoc dump" cli command was simply concatenating xml documents + into the output file. The resulting file had multiple "xml" + processing instructions and multiple root elements which is illegal. + Normally this isn't an issue because Asterisk has only 1 main xml + documentation file but codec_opus has its own file so if it's + downloaded and you do "xmldoc dump", the result is invalid. + + * Added 2 new functions to xml.c: + ast_xml_copy_node_list creates a copy of a list of children. + ast_xml_add_child_list adds a list to an existing list. + + * Modified handle_dump_docs to create a new output document and + add to it the children from each input file. It then dumps the + new document to the output file. + + Change-Id: I3f182d38c75776aee76413dadd2d489d54a85c07 + +2018-07-20 06:54 +0000 [50a26b15a3] Joshua Colp + + * res_pjsip: Update default keepalive interval to 90 seconds. + + A change recently went in which disabled the built-in PJSIP + keepalive. This defaulted to 90 seconds and kept TCP/TLS + connections alive. Disabling this functionality has resulted + in a behavior change of not doing keepalives by default resulting + in TCP/TLS connections dropping for some people. + + This change makes our default keepalive interval 90 seconds + to match the previous behavior and preserve it. + + ASTERISK-27978 + + Change-Id: Ibd9a45f3cbe5d9bb6d2161268696645ff781b1d6 + +2018-07-18 14:19 +0000 [958f76205b] Joshua Colp + + * Update mainline version for the 16 branch. + + Change-Id: I4d36277d10335349d83ae218fa10fee99c3e4c14 + +2018-07-18 14:18 +0000 [e7a76ffee1] Joshua Colp + + * Update ARI version for master/16. + + ARI goes from 3.0.0 to 4.0.0 + + Change-Id: I0649fa34926dc4fc89a166f1d2e3bbd965ef9ebe + +2018-05-29 09:31 +0000 [fe78d374b0] Alexander Traud + + * pjproject_bundled: Repair ./configure --with-ssl=PATH. + + Previously, Asterisk did not tell its bundled PJProject about this configure + parameter. Therefore, PJProject used the platform provided OpenSSL always. + + ASTERISK-27880 + + Change-Id: Iea545aec854dd0e2c061c69bb118a76ce56c5dc6 + +2018-05-10 13:11 +0000 [5bacde37a2] Ben Ford + + * res_rtp_asterisk: Add support for sending NACK requests. + + Support has been added for receiving a NACK request and handling it. + Now, Asterisk can detect when a NACK request should be sent and knows + how to construct one based on the packets we've received from the remote + end. A buffer has been added that will store out of order packets until + we receive the packet we are expecting. Then, these packets are handled + like normal and frames are queued to the core like normal. Asterisk + knows which packets to request in the NACK request using a vector + which stores the sequence numbers of the packets we are currently missing. + + If a missing packet is received, cycle through the buffer until we reach + another packet we have not received yet. If the buffer reaches a certain + size, send a NACK request. If the buffer reaches its max size, queue all + frames to the core and wipe the buffer and vector. + + According to RFC3711, the NACK request must be sent out in a compound + packet. All compound packets must start with a sender or receiver + report, so some work was done to refactor the current sender / receiver + code to allow it to be used without having to also include sdes + information and automatically send the report. + + Also added additional functionality to ast_data_buffer, along with some + testing. + + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + + ASTERISK-27810 #close + + Change-Id: Idab644b08a1593659c92cda64132ccc203fe991d + +2018-07-18 11:12 +0000 [59323121f3] Joshua Colp + + * res_sorcery_config: Allow configuration section to be used based on name. + + A problem I've seen countless times is a global or system section + for PJSIP not getting applied. This is inevitably the result of + the "type=" line missing. This change alleviates that problem. + + The ability to specify an explicit section name has been + added to res_sorcery_config. If the configured section + name matches this and there are no unknown things configured + the section is taken as being for the given type. + + Both the PJSIP "global" and "system" types now support this + so you can just name your section "global" or "system" and it + will be matched and used, even without a "type=" line. + + ASTERISK-27972 + + Change-Id: Ie22723663c1ddd24f869af8c9b4c1b59e2476893 + +2018-07-17 05:24 +0000 [134e2f0ddc] Joshua Colp + + * module: Remove deprecated modules and update support levels. + + I have removed the STATIC_BUILD option immediately as it has not + been maintained in many years and is non-functional. + + ASTERISK-27965 + + Change-Id: I64783d017b86dba9ee3c7bcfb97e59889a3f76d7 + +2018-07-18 11:34 +0000 [94dd0544e5] Chris-Savinovich + + * stasis: Improve message type "Use of before/init after destruction" + + Fixes issue where error msg + "Use of before/init after destruction" + was being printed on disabled messages + in dev mode. With this + fix if message is disabled + a warning will print. + + ASTERISK-25548 + Change-Id: Ie0d866d1cbc60c16dbef08bc65e99505c3c1adfa + +2018-07-17 14:12 +0000 [993ba84cd3] Nick French + + * SRTP: Lower SDES key lifetime minimum to 2^20 + + SRTP SDES key lifetime support was added in ASTERISK_17899. + + In that addition, the minimum key lifetime to be accepted was + set at the 10 hours @ 20ms/packet = 1800000 packets. + + The firmware in the obi1xx ATA uses a hardcoded lifetime of + 2^20 packets. + + Lower the limit to 2^20 to support a wider field of clients. + + ASTERISK-27967 #close + + Change-Id: I81a0703c595a0c9101dfdf02300149a3cc39bf94 + +2018-07-17 11:09 +0000 [fcc0a6fe8a] George Joseph + + * CI: Fix merge strategy + + Change-Id: I5e3fb6adfa6cbf694c0deecf02e3879297b0c12e + +2018-07-17 10:41 +0000 [3e5a6a6cfc] George Joseph + + * CI: Fix regex in daily and ref_debug jobs + + Change-Id: Icf2e67818b2155a158d2390b138613e1f653ea92 + +2018-07-17 09:09 +0000 [0e8976116f] Nick French + + * res_pjsip: Remove spurious error logging when printing silent headers + + Asterisk patched the pjproject source to avoid crashing when pjproject + sip_msg headers are encountered with NULL vptr's, but the patch also + output error messages for some valid headers which simply did not need + to be added to the message itself, such as hidden route headers. + + pjproject has since applied a similar patch to their baseline to avoid + crashes, but their version also avoids the spurious error logging. + + Lets use their patch instead. + + ASTERISK-27961 #close + + Change-Id: I2ddbd82c8da10e0dcc9807a48089d1f3c2d6e389 + +2018-07-17 10:15 +0000 [fa333dedd0] George Joseph + + * CI: Add pre-build merge back in as RECURSIVE + + Change-Id: I0ff1730ef4a4f0ac9f18ccc9bc0dfe7a782f57a8 + +2018-07-17 09:01 +0000 [2553255ace] George Joseph + + * CI: Remove pre-build merge from gates and checks + + Change-Id: Ibc151f63dcec4db847915c2f3cbe5b467dd59574 + +2018-07-17 07:13 +0000 [524f900382] George Joseph + + * CI: Fix logic inversion in runTestsuite + + Change-Id: I56399aa384468f45494c2c3650420563a0b6efe1 + +2018-07-17 04:03 +0000 [0af4a558da] George Joseph + + * CI: Add teardownRealtime + + Change-Id: I2fe55c38607eaec2fbf69ef23a5019e0c443a64b + +2018-07-15 13:58 +0000 [49f83a7490] Corey Farrell + + * loader: Fix startup issues. + + * Merge the preload and load stages, use load ordering to try preload's + first. This fixes an issue where `preload=res_config_curl` would fail + unless res_curl and func_curl were also preloaded. Now it is only + required that those modules be loaded during startup: autoload or + regular load is good enough. + * The configuration option `require` and `preload-require` were only + effective if the modules failed to load. These options will now abort + Asterisk startup if required modules fail to reach the 'Running' + state. + * Missing or invalid 'module.conf' did not prevent startup. Asterisk + doesn't do anything without modules so this a fatal error. + + Change-Id: Ie4176699133f0e3a823b43f90c3348677e43a5f3 + +2018-07-16 13:30 +0000 [a9cef123d9] George Joseph + + * CI: Prevent Jenkins from triggering jobs back to itself + + Change-Id: I9cae8bb3d1a2cea335d3ccd88d471832549666fd + +2018-07-13 18:26 +0000 [5febc995df] Richard Mudgett + + * Build: Fix modules getting their optimization setting overridden. + + Asterisk modules that use PJPROJECT services have their compiler + optimization and possibly their symbolic debug options overridden by the + PJPROJECT configure script selected settings. + + * We need to filter-out any -O and -g options in PJ_CFLAGS before echoing + out the result so the PJPROJECT_INCLUDE variable does not override the + Asterisk module settings when using bundled PJPROJECT. + + NOTE: This patch only has an effect when using bundled PJPROJECT. + + ASTERISK-27563 + + Change-Id: If124169735ecf572ad1535cd43bff94cb44d5b30 + +2018-07-16 11:08 +0000 [d15ef68892] George Joseph + + * CI: runUnittests: loop a few times on waitfullybooted + + Change-Id: Icebc0d013896f3b2a7214945cac60647435c1651 + +2018-07-16 10:49 +0000 [252c4284df] George Joseph + + * CI: Add realtime checks to dailies + + Change-Id: I6dc8ab1679b3505c6dde1d47e1b9276df47814f8 + +2018-07-16 09:13 +0000 [1a52ab70c7] George Joseph + + * CI: Add weekly REF_DEBUG testsuite run + + Change-Id: I5b581d0a0d1d1bb9b38961d40b112fb448355037 + +2018-07-16 08:44 +0000 [9633e9dfd7] George Joseph + + * CI: Fix bad reporting of status by the verification pub + + Change-Id: I6f31a130b3ba0187149aaaa2ce94195a79e0f6a6 + +2018-07-16 07:16 +0000 [b8d75bbb37] George Joseph + + * CI: Make build tag an acceptable docker name + + Change-Id: I3a4b8a4a9c488ddabf9daf651dc1334222056f38 + +2018-07-13 22:44 +0000 [0885ab8afc] Corey Farrell + + * Fix declaration of PBX_CURL for ./configure --without-libcurl + + When `--without-libcurl` is used PBX_CURL is never set. Set default + value 0 so the proper value is passed to menuselect. + + Change-Id: I03e2842a00899cbca2dbde52bb1f6636d54bae1e + +2018-07-10 13:28 +0000 [34f3fe9552] George Joseph + + * app_confbridge: Use the SDP 'label' attribute to correlate users + + Previously, the msid "label" attribute was used to correlate + participant info but because streams could be reused, the msid + wasn't being updated correctly when someone left the bridge and + another joined. + + Now, instead of looking for the msid attribute on a channel's streams, + app_confbridge sets an "SDP:LABEL" attribute on the stream which + res_pjsip_sdp_rtp looks for. If it finds it, it adds a "label" + attribute to the current sdp. + + Change-Id: I6cbaa87fb59a2e0688d956e72d2d09e4ac20d5a5 + +2018-07-13 06:56 +0000 [e8727fcfa8] George Joseph + + * CI: Add daily periodics to CI + + Change-Id: I26933e73928e091ae72e838c02f4f2ec7c3983d6 + +2018-07-11 11:57 +0000 [e19080a184] Alexander Traud (License 6520) + + * Bundled PJPROJECT: Disable internal connection oriented keep-alive. + + Turn off the periodic sending of CRLNCRLN. Default is on (90 seconds), + which conflicts with the global section's keep_alive_interval option in + pjsip.conf. + + patches: + pjsip_keep_not_alive.patch submitted by Alexander Traud (License 6520) + + ASTERISK-27347 + + Change-Id: I6a197f56e1830d3b7e5ec70f17025840a290b057 + +2018-07-09 04:42 +0000 [1445384699] Torrey Searle + + * res_pjsip_sdp_rtp: include ice in ANSWER only if offered + + Keep track if ICE candidates were in the SDP offer & only put them + in the corresponding SDP answer if the offer condaind ICE candidates + + ASTERISK-27957 #close + + Change-Id: Idf2597ee48e9a287e07aa4030bfa705430a13a92 + +2018-07-12 16:34 +0000 [33a84745d0] George Joseph + + * CI: Add Asterisk Gates + + Change-Id: I7e2467f9120812551238d8005deb97f965279205 + +2018-07-11 15:55 +0000 [65b002ab8f] George Joseph + + * CI: Remove duplicate checkout + + Change-Id: If5f925b4c4ed7000b153f3ed8386ce2140c886f8 + +2018-07-11 15:09 +0000 [ba8f8a2813] George Joseph + + * CI: Update cleanup steps and permissions + + Change-Id: I7ca92935979d94845af8e1caf4468cbd6209b7de + +2018-07-11 14:54 +0000 [ad36c4ba9b] George Joseph + + * CI: Fix log artifact paths + + Change-Id: I55136de8f4d9c3b56bd4d054306a187bb04a4b7d + +2018-07-11 14:45 +0000 [4842af6364] George Joseph + + * CI: Remove CleanBeforeCheckout option for testsuite + + Change-Id: I510231c9087f7be5272b8ef3f3223eadaaffb754 + +2018-07-11 14:00 +0000 [3dfc37c60a] George Joseph + + * CI: Move gates into source repo + + Change-Id: If028ede5f3b127fa274c63ce166bc04ad7c1e5db + +2018-07-11 06:14 +0000 [b302ee6bd5] George Joseph + + * CI: Initial commit for moving CI into source repo + + Create tests/CI directory and add files used by Jenkins to + build and test Asterisk. + + With this commit, Jenkins will run the Asterisk Unit Tests using + the Jenkinsfile at tests/CI/unittests.jenkinsfile. Bash scripts + to do the actual building and testing are also in the same directory. + Output is placed in tests/CI/output so that directory has been + added to .gitignore. + + Change-Id: I9448065465e6de2b878634510ace8fd1ef378608 + +2018-07-06 17:00 +0000 [f7137e1230] Joshua Elson + + * res_parking: Add dialplan function for lot channel + + This commit adds a new function to res_parking. + + This function, PARK_GET_CHANNEL allows the retrieval + of the channel name of the channel occupying the parking slot. + + ASTERISK-22825 #close + + Change-Id: Idba6ae55b8a53f734238cb3d995cedb95c0e7b74 + +2018-06-23 01:33 +0000 [10de9fcbf1] Alexander Traud + + * chan_ooh323: IPTOS_MINCOST is not defined on Solaris. + + Furthermore, is required for SIOCGIF*. + + ASTERISK-27938 + + Change-Id: Idc9153ece769944765b66122efb11728d8d8ebde + +2018-07-06 15:05 +0000 [5bb874ee09] Kevin Harwell + + * res_pjsip_session: sdp group:BUNDLE attribute being truncated + + When setting/appending the media id's to the bundle group attribute a '-1' was + being passed to the 'ast_str_set/append' function for the 'max_len' parameter. + This essentially capped the length of the string to what it was originally + allocated with. In this case 64 bytes. + + This patch makes it so a '0' is passed as in for the 'max_len', which means + "no maximum length". + + ASTERISK-27955 #close + + Change-Id: Iec565df6600401d54a502854a53d19bb4cc34876 + +2018-07-05 16:02 +0000 [96abe79ddf] Alexei Gradinari + + * res_pjsip_pubsub: segfault in function publish_expire + + The function pubsub_on_rx_publish_request incorrectly uses + of AST_SCHED_REPLACE_UNREF. + + The AST_SCHED_REPLACE_UNREF should unref old '_data'. + + Because of this, there may be a double unref + of variable 'publication' when ast_sched_del is unsuccessful + that leads to use after free of the 'publication' in publish_expire. + + ASTERISK-27956 #close + + Change-Id: Ie0f0cfc7e036953d890b188656010b325a5cdc82 + +2018-07-06 09:04 +0000 [c1e49720fa] George Joseph + + * test.c: Make output jUnit compatible + + Separate "name" into "classname" and "name". + Use '.' for classname separator instead of '/'. + Prefix reserved words with '_'. + Wrap output with a top-level "testsuites" element. + + Change-Id: Iec1a985eba1c478e5c1d65d5dfd95cb708442099 + +2018-07-06 07:57 +0000 [8f42447c68] George Joseph + + * res_pjsip: Add 'suppress_q850_reason_headers' option to endpoint + + A new option 'suppress_q850_reason_headers' has been added to the + endpoint object. Some devices can't accept multiple Reason headers and + get confused when both 'SIP' and 'Q.850' Reason headers are received. + This option allows the 'Q.850' Reason header to be suppressed. + The default value is 'no'. + + ASTERISK-27949 + Reported-by: Ross Beer + + Change-Id: I54cf37a827d77de2079256bb3de7e90fa5e1deb1 + +2018-07-05 15:43 +0000 [c9f8e068ed] Joshua Colp + + * res_pjsip_t38: Decline T.38 stream on failure case. + + When negotiating an incoming T.38 stream the code incorrectly + returned failure instead of a decline for the stream when a + problem occurred or the configuration didn't allow it. This + resulted in SDP offers being rejected with a 488 response + in all cases, even when another valid stream was present. + + This change makes it so the stream is now declined. If no + streams are accepted a 488 response is sent while if at least + one stream is accepted all the declined streams are, well, + declined. + + ASTERISK-27763 + + Change-Id: I88bcf793788c412a9839d111a5c736bf6867807c + +2018-07-02 18:43 +0000 [d5db664d70] Richard Mudgett + + * res_pjsip_t38.c: Be smarter about how we respond when T.38 is disabled. + + We were blindly responding with AST_T38_REFUSED when ANY T.38 control + frame came accross the bridge. This causes T.38 Gateway to get confused + and the T.38 session to get in a strange state. + + * Made the T.38 framehook only respond to request frames and ignore + response frames. + + ASTERISK-27657 + ASTERISK-27080 + + Change-Id: I5fb5967c7d1efb30a7ff375f82887ca82a55b05b + +2018-07-03 12:10 +0000 [0aff1a278e] Richard Mudgett + + * res_pjsip/pjsip_transport_management.c: Fix deadlock with transport keep alive. + + Using the keep_alive_interval option can result in a deadlock between the + pjproject transport manager group lock and the monitored transports ao2 + container lock. The pjproject transport manager group lock has to be + superior in the locking order to the monitored transports ao2 container + lock because of pjproject callbacks called when already holding the group + lock. The lock inversion happens when Asterisk attempts to send a keep + alive packet over the reliable transports. + + * Made keepalive_transport_thread() iterate over the monitored transports + container rather than use the ao2_callback() method. This avoids holding + the container lock when sending the keep alive packet. + + ASTERISK-26686 + + Change-Id: I5d5392a52e698bbe41a93f7d8e92bf0e61fe3951 + +2018-07-02 18:44 +0000 [de5144e751] Joshua Colp + + * pjsip: Clarify certificate configuration for Websocket. + + The Websocket transport uses the built-in HTTP server. As a result + the TLS configuration is done in http.conf and not in pjsip.conf. + + This change adds a warning if this is configured in pjsip.conf and + also clarifies in the sample configuration file. + + Change-Id: I187d994d328c3ed274b6754fd4c2a4955bdc6dd9 + +2018-06-23 04:50 +0000 [804d931f27] Alexander Traud + + * bridge_softmix_binaural: Enable FFTW3 in Solaris 11. + + ASTERISK-27939 + + Change-Id: Ice5640e08385a64a0a6555deaccd91e86bca154f + +2018-06-29 18:28 +0000 [1aa45ffdfa] Richard Mudgett + + * res_pjsip_t38.c: Fix crash by ignoring 1xx messages. + + If we initiated a T.38 reINVITE, we would crash if we received any other + 1xx response message except 100 if it were followed by a 200 response. + + * Made ignore any 1xx response so we do not close out the T.38 negotiation + too early. For good measure we'll now accept any 2xx response as + acceptance of the reINVITE T.38 offer. + + ASTERISK-27944 + + Change-Id: I0ca88aae708d091db7335af73f41035a212adff4 + +2018-07-01 13:54 +0000 [f30ebd3823] Joshua Colp + + * res_pjsip_pubsub: Hold module reference for publications. + + Incoming publications need to ensure that the module remains + loaded for the lifetime of them. This is now done by holding + a reference to the module while the publication exists. This + mirrors that of inbound subscriptions. + + ASTERISK-27783 + + Change-Id: Ia98c95a15e11af25728d5fb3e56e12cda0cfc7c0 + +2018-05-21 07:24 +0000 [9d3f3a4b0a] Robert Mordec + + * app_confbridge: Bridge and announcers not removed if conference ends quickly + + If a conference is ended very quickly after it was created (i.e., the + first user immediately hangs up) then the conference bridge and announcer + channels are not removed. + + When a conference is created, the push_announcer() function is added to + the playback queue task processor and the conference object reference is + bumped. If a conference is ended while the push_announcer() function is + still going then the ao2_cleanup(conference) at the end of + push_announcer() will call the destructor function - + destroy_conference_bridge(). + + The destroy_conference_bridge() function will then add the + hangup_playback() task to the playback queue and will wait for it to end. + Since it is already a current task of the playback queue it will wait + forever. + + This patch makes the conference thread call push_announcer() directly. + This way the conference object reference bump is not needed. Since the + playback queue task processor is only used by the conference thread + itself, there is no danger of trying to play announcements before the + announcer is pushed to the bridge. + + ASTERISK-27870 #close + + Change-Id: I947a50fb121422d90fd1816d643a54d75185a477 + +2018-06-21 00:28 +0000 [db02218db2] Matthew Fredrickson + + * main/cdr.c: Alleviate CDR deadlock + + There is a rare case (do to the infrequent timing involved) where + CDR submission threads in batch mode can deadlock with a currently + running CDR batch process. This patch should remove the need for + holding the lock in the scheduler and should clean a few code + paths up that inconsistently submitted new work to the CDR batch + processor. + + ASTERISK-27909 + + Change-Id: I6333e865db7c593c102c2fd948cecdb96481974d + Reported-by: Denis Lebedev + +2018-06-25 22:08 +0000 [4b9bf4f5e0] Kirsty Tyerman + + * pbx_dundi: reordered unloading of module pbx_dundi + + Destroy scheduler after peers are pruned to stop dundi crashing when + unloading module. + + ASTERISK-26987 + Reported-by: Kirsty Tyerman + + Change-Id: Ic12e562cd90d8d813a9e97f302045091f59e3c05 + +2018-06-28 12:07 +0000 [7a238fe74d] Richard Mudgett + + * AMI SendText action: Fix to use correct thread to send the text. + + The AMI action was directly sending the text to the channel driver. + However, this makes two threads attempt to handle media and runs afowl of + CHECK_BLOCKING. + + * Queue a read action to make the channel's media handling thread actually + send the text message. This changes the AMI actions success/fail response + to just mean the text was queued to be sent not that the text actually got + sent. The channel driver may not even support sending text messages. + + ASTERISK-27943 + + Change-Id: I9dce343d8fa634ba5a416a1326d8a6340f98c379 + +2018-06-25 07:37 +0000 [e3585353f6] George Joseph + + * res_pjsip_messaging: Allow application/* for in-dialog MESSAGEs + + In addition to text/* content types, incoming_in_dialog_request now + accepts application/* content types. + + Also fixed a length issue when copying the body text. It was one + character short. + + ASTERISK-27942 + + Change-Id: I4e54d8cc6158dc47eb8fdd6ba0108c6fd53f2818 + +2018-06-25 15:42 +0000 [5f12e2bd07] George Joseph + + * app_confbridge: Move participant info code to confbridge_manager. + + With the participant info code in app_confbridge, we were still + in the process of adding the channel to the bridge when trying to send + an in-dialog MESSAGE. This caused 2 threads to grab the channel + blocking flag at the same time. To mitigate this, the participant + info code was moved to confbridge_manager so it runs after all + channel/bridge actions have finished. + + Change-Id: I228806ac153074f45e0b35d5236166e92e132abd + +2018-06-18 21:22 +0000 [880fbff6b7] George Joseph + + * res_pjsip_session: Add ability to accept multiple sdp answers + + pjproject by default currently will follow media forked during an INVITE + on outbound calls if the To tag is different on a subsequent response as + that on an earlier response. We handle this correctly. There have + been reported cases where the To tag is the same but we still need to + follow the media. The pjproject patch in this commit adds the + capability to sip_inv and also adds the capability to control it at + runtime. The original "different tag" behavior was always controllable + at runtime but we never did anything with it and left it to default to + TRUE. + + So, along with the pjproject patch, this commit adds options to both the + system and endpoint objects to control the two behaviors, and a small + logic change to session_inv_on_media_update in res_pjsip_session to + control the behavior at the endpoint level. + + The default behavior for "different tags" remains the same at TRUE and + the default for "same tag" is FALSE. + + Change-Id: I64d071942b79adb2f0a4e13137389b19404fe3d6 + ASTERISK-27936 + Reported-by: Ross Beer + +2018-06-21 11:45 +0000 [675e2ddb49] Alexander Traud + + * uuid: Enable UUID in Solaris 11. + + ASTERISK-27933 + Reported by: bautsche + + Change-Id: I9b8362824efbfb2a16981e46e85f7c8322908c49 + +2018-06-13 02:25 +0000 [184b375b41] Kristian F. Høgh + + * app_queue: Add option for predial handlers on caller and callee channels + + Add predial handler support to app_queue. app_dial (ASTERISK_19548) and + app_originate (ASTERISK_26587) have the ability to execute predial + handlers on caller and callee channels. This patch adds predial handlers + to app_queue and uses the same options as Dial and Originate (b and B). + The caller routine gets executed when the caller first enters the queue. + The callee routine gets executed for each queue member when they are about + to be called. + + ASTERISK-27912 + + Change-Id: I5acf5c32587ee008658d12e8a8049eb8fa4d0f24 + +2018-06-21 16:39 +0000 [cad50d6dbf] Richard Mudgett + + * VECTOR: Passing parameters with side effects to macros is dangerous. + + * Fix several instances where we were bumping a ref in the parameter and + then unrefing the object if it failed. The way the AST_VECTOR_APPEND() + and AST_VECTOR_REPLACE() macros are implemented means if it fails the new + value was never evaluated. + + Change-Id: I2847872a455b11ea7e5b7ce697c0a455a1d0ac9a + +2018-06-20 16:57 +0000 [aaaa6f4a4b] Richard Mudgett + + * bridge_softmix.c: Fix memory leak. + + Made release the media_types vector in + softmix_bridge_stream_topology_changed(). + + Change-Id: Ide3f47e379b614879220dfeeb13843f9f2b177b5 + +2018-06-21 11:22 +0000 [bfeded7e62] Alexander Traud + + * smsq: Remove an left-over special case for Solaris. + + Actually, this case was never needed because the check below does the same. + + Change-Id: Ia2fca4ba6c58c644a8b7cb2d9db8539728c14ffb + +2018-06-21 11:17 +0000 [bbea9cfc3b] Alexander Traud + + * res_http_post: Enable GMime in Solaris 11. + + Change-Id: Ie434541f18f894c751d2e44bcb3efb3cac626019 + +2018-06-21 05:08 +0000 [7f3882c8e9] Alexander Traud + + * codecs/ilbc: Compile in Solaris 11. + + The symbol FS is the sampling frequency. That symbol is not used in Asterisk at + all and was a copy-and-paste of the iLBC reference code from the IETF RFC. + However, in Solaris, that symbol is defined by another header already. To + compile in Solaris, that symbol has to go. + + Change-Id: I91ddbe5be7c00069c3a25abd5f58d7b2f04c51b1 + +2018-06-21 05:07 +0000 [9704c424f5] Alexander Traud + + * chan_oss: Compile in Solaris 11. + + M_READ existed already and was conflicting in name. + + Change-Id: I02108e07ae7d2dc314fe1e6c706c17731095a3e4 + +2018-06-21 05:04 +0000 [6f47b84fbd] Alexander Traud + + * func_env: Compile in Solaris 11. + + Change-Id: Idc9b36720f3d29c90a35a6a1ae79a7f9e1aaf50e + +2018-06-21 05:01 +0000 [a5c53bd323] Alexander Traud + + * utils: Avoid an unused variable in Solaris 11. + + With ./configure --enable-dev-mode[=noisy], the build fails because every + warning gets an error. Therefore, Asterisk has to be free of warnings and this + variable must go. + + Change-Id: I63dd2bc4833b9bdb04602f83422d16caf289d46a + +2018-06-21 04:59 +0000 [92109cf496] Alexander Traud + + * BuildSystem: Enable ./configure in Solaris 11. + + ASTERISK-27931 + + Change-Id: If298ce7f03be227a3687b9c20d382c9c55a72404 + +2018-06-20 13:24 +0000 [d6721e1e4c] Alexander Traud + + * BuildSystem: Enable autotools in Solaris 11. + + Because this was the last operating system which required a special case, a + version appended to the autotools, the whole version stuff is removed by this + change. This simplifies the script ./bootstrap.sh. Hopefully, this gives even + broader platform compatibility. + + ASTERISK-27929 + ASTERISK-27926 + + Change-Id: Id4cf433a1a7fa861d0210e1a2e16ca592b49fd5a + +2018-06-13 11:33 +0000 [eb8bbe660e] Richard Mudgett + + * channel.c: Make CHECK_BLOCKING() save thread LWP id for messages. + + * Removed an unnecessary call to ast_channel_blocker_set() in + __ast_read(). + + ASTERISK-27625 + + Change-Id: I342168b999984666fb869cd519fe779583a73834 + +2018-06-13 16:41 +0000 [da54605b8a] Richard Mudgett + + * ARI POST DTMF: Make not compete with channel's media thread. + + There can be one and only one thread handling a channel's media at a time. + Otherwise, we don't know which thread is going to handle the media frames. + + ASTERISK-27625 + + Change-Id: I4d6a2fe7386ea447ee199003bf8ad681cb30454e + +2018-06-13 13:05 +0000 [7d874c1af7] Richard Mudgett + + * AMI PlayDTMF Action: Make not compete with channel's media thread. + + There can be one and only one thread handling a channel's media at a time. + Otherwise, we don't know which thread is going to handle the media frames. + + ASTERISK-27625 + + Change-Id: Ia341f1a6f4d54f2022261abec9021fe5b2eb4905 + +2018-06-12 14:09 +0000 [080508d2eb] Richard Mudgett + + * channel.c: Fix usage of CHECK_BLOCKING() + + The CHECK_BLOCKING() macro is used to indicate if a channel's handling + thread is about to do a blocking operation (poll, read, or write) of + media. A few operations such as ast_queue_frame(), soft hangup, and + masquerades use the indication to wake up the blocked thread to reevaluate + what is going on. + + ASTERISK-27625 + + Change-Id: I4dfc33e01e60627d962efa29d0a4244cf151a84d + +2018-06-18 18:04 +0000 [0989b63047] Richard Mudgett + + * autoservice: Don't start channel autoservice if the thread is a user interface. + + Executing dialplan functions from either AMI or ARI by getting a variable + could place the channel into autoservice. However, these user interface + threads do not handle the channel's media so we wind up with two threads + attempting to handle the media. + + There can be one and only one thread handling a channel's media at a time. + Otherwise, we don't know which thread is going to handle the media frames. + + ASTERISK-27625 + + Change-Id: If2dc94ce15ddabf923ed1e2a65ea0ef56e013e49 + +2018-06-18 16:07 +0000 [91c3ac19cb] Richard Mudgett + + * Dialplan functions: Fix some channel autoservice misuse. + + * Fix off nominal paths leaving the channel in autoservice. + * Remove unnecessary start/stop channel autoservice. + * Fix channel locking around a channel datastore search. + + Change-Id: I7ff2e42388064fe3149034ecae57604040b8b540 + +2018-06-19 10:43 +0000 [720c2d1da2] Richard Mudgett + + * Fix some doxygen and curly placement. + + Change-Id: I9a784a7c804120a8fa826c2a4cb9957e4b0b2fc8 + +2018-06-18 13:17 +0000 [c1686b8b3e] Richard Mudgett + + * tcptls.h: Remove redundant SSL_CTX typedef. + + It is invalid to typedef something more than once. Though not all gcc + compilers on different OS's complain about it. + + Change-Id: I5a7d4565990c985822d61ce75bde0b45f9870540 + +2018-06-12 15:13 +0000 [a470bb9e27] Richard Mudgett + + * channel: Fix some more unprotected channel flag setting. + + Change-Id: I34c3b1201b1de539945bcfdcb264fff30332d48c + +2018-06-15 15:21 +0000 [8732d62334] Matthew Fredrickson + + * menuselect/menuselect_curses: Resolves sprintf usage error + + Acccording to the man page for sprintf, using the same buffer for + output as one used as an input yields undefined behavior. + This patch should work around this problem. + + ASTERISK-27903 + Reported-by: Alexander Traud + + Change-Id: I2213dcb454aff26457e2e4cc9c6821276463ae3a + +2018-06-12 09:30 +0000 [4c7ab73468] Sam Wierema + + * app_mp3: remove 10 seconds of silence after mp3 playback + + This patch changes the way asterisk polls output from mpg123, instead + of waiting for 10 seconds(when playing an http url) it now uses a + timeout of one second and iterates 10 times using this same timeout. + + The main difference is that for every timeout asterisk receives it now + checks if mpg123 is still running before poll again. + + ASTERISK-27752 + + Change-Id: Ib7df8462e3e380cb328011890ad9270d9e9b4620 + +2018-06-13 04:40 +0000 [9d7958672b] Alexander Traud + + * tests/test_utils: Repair ./configure --with-ssl=PATH. + + ASTERISK-27914 + + Change-Id: Ibcab8f556ee77776f203cff8b06d776a673b7bc4 + +2018-06-04 20:31 +0000 [e1908ea484] Kirsty Tyerman + + * chan_iax2: better handling for timeout and EINTR + + The iax2 module is not handling timeout and EINTR case properly. Mainly when + there is an interupt to the kernel thread. In case of ast_io_wait recieves a + signal, or timeout it can be an error or return 0 which eventually escapes the + thread loop, so that it cant recieve any data. This then causes the modules + receive queue to build up on the kernel and stop any communications via iax in + asterisk. + + The proposed patch is for the iax module, so that timeout and EINTR does not + exit the thread. + + ASTERISK-27705 + Reported-by: Kirsty Tyerman + + Change-Id: Ib4c32562f69335869adc1783608e940c3535fbfb + +2018-05-31 16:22 +0000 [e7a7506f9c] George Joseph + + * app_confbridge: Enable sending events to participants + + ConfBridge can now send events to participants via in-dialog MESSAGEs. + All current Confbridge events are supported, such as ConfbridgeJoin, + ConfbridgeLeave, etc. In addition to those events, a new event + ConfbridgeWelcome has been added that will send a list of all + current participants to a new participant. + + For all but the ConfbridgeWelcome event, the JSON message contains + information about the bridge, such as its id and name, and information + about the channel that triggered the event such as channel name, + callerid info, mute status, and the MSID labels for their audio and + video tracks. You can use the labels to correlate callerid and mute + status to specific video elements in a webrtc client. + + To control this behavior, the following options have been added to + confbridge.conf: + + bridge_profile/enable_events: This must be enabled on any bridge where + events are desired. + + user_profile/send_events: This must be set for a user profile to send + events. Different user profiles connected to the same bridge can have + different settings. This allows admins to get events but not normal + users for instance. + + user_profile/echo_events: In some cases, you might not want the user + triggering the event to get the event sent back to them. To prevent it, + set this to false. + + A change was also made to res_pjsip_sdp_rtp to save the generated msid + to the stream so it can be re-used. This allows participant A's video + stream to appear as the same label to all other participants. + + Change-Id: I26420aa9f101f0b2387dc9e2fd10733197f1318e + +2018-06-13 05:06 +0000 [b01fc2ef3d] Alexander Traud + + * res_rtp_asterisk: Instead of ./configure use OPENSSL_NO_SRTP. + + Previously, Asterisk used its script ./configure, to test whether OpenSSL was + built with no-srtp (or was simply too old). However, the header file + is the preferred way to detect the local configuration + of OpenSSL. + + As a positive side-effect the script ./configure does not interleave the + detection of the Open Settlement Protocol Toolkit (OSPTK) with the detection of + individual features of OpenSSL anymore. + + Change-Id: I3c77c7b00b2ffa2e935632097fa057b9fdf480c0 + +2018-06-05 04:36 +0000 [41175caee0] Joshua Colp + + * rtp: Don't negotiate dynamic codecs using payload. + + In Asterisk there are some dynamic codecs that have + a fixed payload number. This number was being improperly + used to negotiate the codec, instead of using the name + and sample rate. This could result in the wrong payload + number being negotiated for a codec. + + This change makes it so that only static payloads + will be negotiated using their payload number. + + ASTERISK-27848 + + Change-Id: Ia865830170fd3f808cdb33104f3d4c4ffdc77570 + +2018-04-16 14:13 +0000 [b649682caa] Sean Bright + + * AST-2018-007: iostreams potential DoS when client connection closed prematurely + + Before Asterisk sends an HTTP response (at least in the case of errors), + it attempts to read & discard the content of the request. If the client + lies about the Content-Length, or the connection is closed from the + client side before "Content-Length" bytes are sent, the request handling + thread will busy loop. + + ASTERISK-27807 + + Change-Id: I945c5fc888ed92be625b8c35039fc6d2aa89c762 + +2018-04-30 17:38 +0000 [81ac32a85f] Richard Mudgett + + * AST-2018-008: Fix enumeration of endpoints from ACL rejected addresses. + + When endpoint specific ACL rules block a SIP request they respond with a + 403 forbidden. However, if an endpoint is not identified then a 401 + unauthorized response is sent. This vulnerability just discloses which + requests hit a defined endpoint. The ACL rules cannot be bypassed to gain + access to the disclosed endpoints. + + * Made endpoint specific ACL rules now respond with a 401 unauthorized + which is the same as if an endpoint were not identified. The fix is + accomplished by replacing the found endpoint with the artificial endpoint + which always fails authentication. + + ASTERISK-27818 + + Change-Id: Icb275a54ff8e2df6c671a6d9bda37b5d732b3b32 + +2018-06-08 15:02 +0000 [0743ad6422] Alexander Traud + + * res_rtp_asterisk: Allow OpenSSL configured with no-deprecated. + + Furthermore, allow OpenSSL configured with no-dh. Additionally, this change + allows auto-negotiation of the elliptic curve/group for servers, not only with + OpenSSL 1.0.2 but also with OpenSSL 1.1.0 and newer. This enables X25519 + (since OpenSSL 1.1.0) and X448 (since OpenSSL 1.1.1) as a side-effect. + + ASTERISK-27910 + + Change-Id: I5b0dd47c5194ee17f830f869d629d7ef212cf537 + +2018-06-08 06:01 +0000 [99aed78078] Alexander Traud + + * crypto.h: Repair ./configure --with-ssl=PATH. + + ASTERISK-27908 + + Change-Id: Iac49d9f82faeb8a4611c6805906bd6d650b1b1d8 + +2018-06-08 04:03 +0000 [ca682f0030] Alexander Traud + + * res_crypto: Allow OpenSSL configured with no-deprecated. + + The header had to be included explicitly. + + ASTERISK-27906 + + Change-Id: I41743801eed998c039d73db7a0762d104a4f75b2 + +2018-06-08 02:41 +0000 [234bf4b7ff] Alexander Traud + + * res_srtp: Repair ./configure --with-ssl=PATH. + + ASTERISK-27905 + + Change-Id: Ibb7dc148a0048f4f9c3b12937ba4240dff0d15e2 + +2018-05-31 10:25 +0000 [65ff2f057a] Alexei Gradinari + + * func_odbc: NODATA if SQLNumResultCols returned 0 columns on readsql + + The functions acf_odbc_read/cli_odbc_read ignore a number of columns + returned by the SQLNumResultCols. + If the number of columns is zero it means no data. + In this case, a SQLFetch function has to be not called, + because it will cause an error. + + ASTERISK-27888 #close + + Change-Id: Ie0f7bdac6c405aa5bbd38932c7b831f90729ee19 + +2018-06-07 08:46 +0000 [1725eaf8fb] George Joseph + + * chan_pjsip: Register for "BEFORE_MEDIA" responses + + chan_pjsip wasn't registering for "BEFORE_MEDIA" responses which meant + it was not updating HANGUPCAUSE for 4XX responses. If the remote end + sent a "180 Ringing", then a "486 Busy", the hangup cause was left at + "180 Normal Clearing". + + * Removed chan_pjsip_incoming_response from the original session + supplement (which was handling only "AFTER MEDIA") and added it to a + new session supplement which accepts both "BEFORE_MEDIA" and + "AFTER_MEDIA". + + * Also cleaned up some cleanup code in load module. + + ASTERISK-27902 + + Change-Id: If9b860541887aca8ac2c9f2ed51ceb0550fb007a + +2018-06-07 07:19 +0000 [9f2eb17005] Alexander Traud + + * ooh323c: GCC 8.1 warned about output truncated before terminating nul. + + ASTERISK-27901 + + Change-Id: I5a8e894f4924ef52e3094f6870656a559d67f3d7 + +2018-06-05 13:43 +0000 [7af5e86821] Alexei Gradinari + + * pjsip_options: show/reload AOR qualify options using CLI + + Currentrly pjsip_options code does not handle the situation when the + AOR qualify options were changed. + + Also there is no way to find out what qualify options are using. + + This patch add CLI commands to show and synchronize Aor qualify options: + pjsip show qualify endpoint + Show the current qualify options for all Aors on the PJSIP endpoint. + pjsip show qualify aor + Show the PJSIP Aor current qualify options. + pjsip reload qualify endpoint + Synchronize the qualify options for all Aors on the PJSIP endpoint. + pjsip reload qualify aor + Synchronize the PJSIP Aor qualify options. + + ASTERISK-27872 + + Change-Id: I1746d10ef2b7954f2293f2e606cdd7428068c38c + +2018-05-22 16:21 +0000 [e46b442e38] Alexei Gradinari + + * pjsip_options: handle modification of qualify options in realtime + + Currentrly pjsip_options code does not handle the situation when the + qualify options were changed in realtime database. + Only 'module reload res_pjsip' helps. + + This patch add a check on contact add/update observers if the contact + qualify options are different than local aor qualify options. + If the qualify options were modified then synchronize + the pjsip_options AOR local state. + + ASTERISK-27872 + + Change-Id: Id55210a18e62ed5d35a88e408d5fe84a3c513c62 + +2018-05-30 01:12 +0000 [e078558038] Pirmin Walthert + + * bridge_channel.c: Fix Deadlock when using Local channels and fax gateway + + ast_indicate is invoked with the bridge locked. As ast_indicate locks the + other end of the bridge as well this can lead to a deadlock in some situations. + (Especially when a different thread does the same in the reverse order). + This patch calls ast_indicate after unlocking the bridge which fixes the + deadlock. Calling ast_indicate with these parameters without locking the + bridge should be safe as this is done at different places without a + bridge lock. + + ASTERISK-27094 #close + Reported-by: David Brillert + + Change-Id: I5f86c1e2ce75b9929a36ab589b18c450e62ea35f + +2018-06-04 09:50 +0000 [437ab41881] George Joseph + + * app_sendtext: Allow content types other than text/plain + + There was no real reason to limit the conteny type to text/plain other + than that's what it was limited to before. Now any text/* content + type will be allowed for channel drivers that don't support enhanced + messaging and any type will be allowed for channel drivers that do + support enhanced messaging. + + Change-Id: I94a90cfee98b4bc8e22aa5c0b6afb7b862f979d9 + +2018-05-28 19:17 +0000 [a7f4121238] William McCall + + * app_confbridge: Add talking indicator for ConfBridgeList AMI response + + When an AMI client connects, it cannot determine if a user was talking + prior to a transition in the user speaking state (which would generate + a ConfbridgeTalking event). This patch causes app_confbridge to track the + talking state and make this state available via ConfBridgeList. + + ASTERISK-27877 #close + + Change-Id: I19b5284f34966c3fda94f5b99a7e40e6b89767c6 + +2018-05-29 12:28 +0000 [6bbede84fb] Richard Mudgett + + * app_meetme: Fix manager event documentation for several events. + + The MeetmeJoin, MeetmeLeave, MeetmeEnd, MeetmeMute, MeetmeTalking, and + MeetmeTalkRequest AMI events were documented with sending out a Usernum + header when the User header was actually output. + + * Change the online documentation to match reality. + + ASTERISK-27873 + ASTERISK-25261 + + Change-Id: I437bc70618d07c183c9624b7069c2fcae7f17a39 + +2018-05-28 10:29 +0000 [24503fb600] Alexander Traud + + * tcptls.h: Repair ./configure --with-ssl=PATH. + + asterisk/tcptls.h was included (explicitly, implicitly, or transitively). Those + inclusions got replaced by forward declarations. As side effect, the inclusions + got completed. + + ASTERISK-27878 + + Change-Id: I9d102728e30336d6522e5e4ae9e964013a0835f7 + +2018-05-25 09:55 +0000 [d36338ce2b] Alexander Traud + + * tcptls: Allow OpenSSL configured with no-dh. + + Additionally, this change allows auto-negotiation of the elliptic curve/group + for servers, not only with OpenSSL 1.0.2 but also with OpenSSL 1.1.0 and newer. + This enables X25519 (since OpenSSL 1.1.0) and X448 (since OpenSSL 1.1.1) as a + side-effect. + + ASTERISK-27876 + + Change-Id: I62c2aba4a630aefc231b71f646207e8c027d9497 + +2018-05-25 07:22 +0000 [91616f4524] Alexander Traud + + * tcptls: Allow OpenSSL 1.1.x configured with enable-ssl3-method no-deprecated. + + ASTERISK-27874 + + Change-Id: Ica65113511c7a1c13f7988e7d9e7d9e7f3f620dd + +2018-05-15 08:45 +0000 [2bf26ce5ac] George Joseph + + * ast_coredumper: Fix output directory and variable precedence + + The OUTPUTDIR variable in ast_debug_tools.conf.sample is now set + to "/tmp" instead of "/some/directory". + + Variables set on the command line or that are already in the + environment now take predecence over variables set in the config files. + + ASTERISK-27846 + Reported by: Ted G + + Change-Id: Ie8baec52d531886bf5849ec1d59bb59dc87ad387 + +2018-05-09 08:31 +0000 [c5d2bf05f4] Torrey Searle + + * res/res_rtp_asterisk: ensure marker bit is correctly set on ssrc change + + Certain race conditions between changing bridge types and DTMF can + cause the current FLAG_NEED_MARKER_BIT to send the marker bit before + the actual first packet of native bridging. + + This logic keeps track of the ssrc the bridge is currently sending + and will correctly ensure the marker bit is set if SSRC as changed + from the previous sent packet. + + ASTERISK-27845 + + Change-Id: I01858bd0235f1e5e629e20de71b422b16f55759b + +2018-04-23 09:04 +0000 [a507c73a78] Joshua Colp + + * rtp: Add support for RTP extension negotiation and abs-send-time. + + When RTP was originally created it had the ability to place a single + extension in an RTP packet. In practice people wanted to potentially + put multiple extensions in one and so RFC 5285 (obsoleted by RFC + 8285) came into existence. This allows RTP extensions to be negotiated + with a unique identifier to be used in the RTP packet, allowing + multiple extensions to be present in the packet. + + This change extends the RTP engine API to add support for this. A + user of it can enable extensions and the API provides the ability to + retrieve the information (to construct SDP for example) and to provide + negotiated information (from SDP). The end result is that the RTP + engine can then query to see if the extension has been negotiated and + what unique identifier is to be used. It is then up to the RTP engine + implementation to construct the packet appropriately. + + The first extension to use this support is abs-send-time which is + defined in the REMB draft[1] and is a second timestamp placed in an + RTP packet which is for when the packet has left the sending system. + It is used to more accurately determine the available bandwidth. + + ASTERISK-27831 + + [1] https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 + + Change-Id: I508deac557867b1e27fc7339be890c8018171588 + +2018-05-22 17:17 +0000 [1bec0c73b3] Richard Mudgett + + * channel.c: Fix off nominal channel allocation failure path. + + __ast_channel_alloc_ap() had a failure exit path that hadn't setup the fd + descriptors to -1 yet. The destructor would then attempt to close these + fd's that had never been opened. + + Change-Id: Icf21093f36c60781e8cf6ee9d586536302af33e3 + +2018-05-18 12:46 +0000 [d402594f74] Rodrigo Ramírez Norambuena + + * app_queue: Update year Copyright and fix missing tabs in documentation + + Change-Id: Ieb8faf37dc765463ee5dbca1d1343242c756b1c7 + +2018-05-18 16:45 +0000 [39632c7e00] Alexei Gradinari + + * config.c: Fix successful DELETE treated as failure + + The config engine destroy_func callback function returns the number of + rows deleted or -1 on error. But the function + ast_destroy_realtime_fields treated non-zero return values as error. + + ASTERISK-27863 + + Change-Id: Ied02b38e8196cb03043e609a0679feebd288d17b + +2018-05-14 06:07 +0000 [9f9dce05b2] Matthew Fredrickson + + * netsock2: Add ast_sockaddr_resolve_first_af to netsock2 public API + + This function originally was used in chan_sip to enable some simplifying + assumptions and eventually was copy and pasted into res_pjsip_logger and + res_hep. Since it's replicated in three places, it's probably best to + move it into the public netsock2 API for these modules to use. + + Change-Id: Id52e23be885601c51d70259f62de1a5e59d38d04 + +2018-05-20 06:36 +0000 [1424f42d25] Alexander Traud + + * libasteriskssl: Allow OpenSSL 1.0.2 configured with no-deprecated. + + Use CRYPTO_set_id_callback(.) only with OpenSSL 0.9.8 and older. + + ASTERISK-27867 + + Change-Id: Iadd58d5bf6f538eb224203970a4e88e26f259655 + +2018-05-19 08:23 +0000 [2228ae3f27] Alexander Traud + + * tcptls: Repair ./configure --with-ssl=PATH. + + SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 got discovered without honoring a PATH. + + ASTERISK-27865 + + Change-Id: I8cd358eed7411726d08fa7b01691bef122fbeb71 + +2018-03-27 18:53 +0000 [2ca3b6d9cc] Nic Colledge + + * app_voicemail: Fix data-type mismatch between app_voicemail and database + + Fix data-type mismatch between app_voicemail and database columns + exposed by new version of MariaDB + + ASTERISK-27760 + + Change-Id: I8543ad480a08c98be78bde1ee870e6e6c84b2c5b + +2018-05-12 06:53 +0000 [97f20fe5ed] Nic Colledge + + * app_voicemail: Fix incorrect msg leaving/retrieving an ODBC voicemail + + Correct the log warning message shown when ODBC voicemail + retrieve_file is called and there is a null value in the category + column. + A more meaningfull message is now written at debug level. + + ASTERISK-27853 + + Change-Id: Ic36e97d5eb070a23a12ba45972f6b53e2182a3f4 + +2018-04-17 21:15 +0000 [52ed6bcc8f] Brian P. Martin + + * chan_mobile: support handling of caller-id names ("cnam"). + + Add support to handle caller-ID names ("cnam") in addition to caller-ID + numbers. The prior code ignored the caller-ID name altogether, and + used the local name for the cell phone (e.g. "my-iphone") in its place. + + Note: as of this writing, at least some Android phones don't pass cnam to + us. This can be seen by issuing "core set debug 2" in the CLI and watching + the "CLIP" record when a call comes in. If cnam isn't in the CLIP record, + there's nothing we can do to provide one. We'll provide a null cnam field, + so later Asterisk processes know to try other sources (e.g. cidname database, + OpenCNAM, etc.). + + Reported by: Brian Martin + Tested by: Brian Martin + ASTERISK-27726 + + Change-Id: I89490d85fa406c36261879c50ae5e65595538ba5 + +2018-05-17 01:58 +0000 [f10fc135d4] Alexander Traud + + * res_pjsip_endpoint_identifier_ip: Unregister the module for headers. + + Asterisk uses Reference Counting to track whether a module can be unloaded. + Every consumer who requires a module, increases the reference count. When the + consumer goes, is unloaded itself, it has to decrease the reference count on + all its used/required modules. That way + core stop gracefully + works on the command-line interface (CLI): One module after the other is + unloaded. A recent change broke this for the module res_pjsip. + + ASTERISK-27861 + + Change-Id: I261abcb411d026bbb0691cc78f28300bfd3103a3 + +2018-05-11 12:49 +0000 [71d1e8d8c8] Alexander Traud + + * rtp_engine: Remove the double assigned RTP payload ID of H.263+. + + Mantis-3709 (Commit 68ff3c3, Asterisk 1.2) added support for the video format + H.263+. For this, the RTP payload ID 103 got assigned statically. Commit f1aadc8 + assigned another payload ID 98 for this format in Asterisk 1.6. + + Change-Id: I90e35b158487f8f1f8187da6241b54cd3b74e667 + +2018-05-11 12:26 +0000 [4722a653f4] Corey Farrell + + * cli: Display correct unit for HTTP timeout in "manager show settings". + + HTTP timeout is in seconds, not minutes. + + ASTERISK-27852 #close + + Change-Id: Ie6640835cb07307555741f9b559c2eb876d9343e + +2018-05-11 10:37 +0000 [263637a38d] Alexander Traud + + * rtp_engine: Avoid a typo error in Doxygen for ast_rtp_codecs_find_payload_code. + + Change-Id: Ica089d4507a27ddfc4ce3a88d697ffbef378de48 + +2018-05-06 21:17 +0000 [b5914d90ac] Corey Farrell + + * Fix GCC 8 build issues. + + This fixes build warnings found by GCC 8. In some cases format + truncation is intentional so the warning is just suppressed. + + ASTERISK-27824 #close + + Change-Id: I724f146cbddba8b86619d4c4a9931ee877995c84 + +2018-05-11 07:10 +0000 [919b0eb3f2] Alexander Traud + + * rtp_engine: Allow Media Formats with add_static_payload(-1) on egress again. + + This issue affected only installations with rtp_use_dynamic=yes in asterisk.conf + which is the default since Asterisk 15. Codec 2 and SiLK were built-in examples + of media formats which were affected. + + ASTERISK-27850 + Reported by: Dinis Brazão, Selene Feigl + + Change-Id: I08c1e76433a67e4350141d38cacf3a1cb5086496 + +2018-05-09 09:30 +0000 [2e37684913] Corey Farrell + + * git: Ignore *.orig. + + This prevents accidental commit of files created by patch. + + Change-Id: I68380db61f0f9d620046f719ccd978811d0e9964 + +2018-04-18 02:27 +0000 [2d81709ab1] Alexander Traud + + * sip_to_pjsip: Enable python3 compatibility. + + The script remains compatible with Python 2.7 but now also works with + Python 3.3 and newer; to ease the migration from chan_sip to chan_pjsip. + + ASTERISK-27811 + + Change-Id: I59cc6b52a1a89777eebcf25b3023bdf93babf835 + +2018-05-08 14:28 +0000 [cea87fe7b8] Corey Farrell + + * makeopts.in: Remove unused/undefined AST_MARCH_NATIVE. + + Change-Id: I617a96ebb83ec99f5d3176bbbee2d2a272ccb203 + +2018-05-08 04:59 +0000 [9f1e1d153a] Jaco Kroon + + * manager: fix digest auth for ami/http mechanism. + + Due to a fixed size buffer the digest authentication could be + incorrectly calculated if a large URI was provided, causing + authentication failure. The buffer is now dynamically allocated to allow + any size URI within the normal limits of the HTTP request size. + + ASTERISK-27841 + + Change-Id: I660609db13b8f9e5f9567f339dd804f4985d41b3 + +2018-05-04 13:47 +0000 [d855658f23] Corey Farrell + + * app_macro: Prevent infinite loop in find_matching_priority. + + Use AST_PBX_MAX_STACK to escape if we recurse 128 times. This will + prevent crash if dialplan contains an include loop. Log an error when + this occurs, at most one message per call to Macro() so we avoid logger + spam. + + ASTERISK-26570 #close + + Change-Id: I6c71b76998c31434391b150de055ae9a531e31da + +2018-01-11 06:37 +0000 [f4c360143b] Tzafrir Cohen + + * cdr_mysql: my_connect_db(): reduce indentation + + ASTERISK-27572 + + Change-Id: I00bd5363ac94c764c56d8626a5945ed7f3934fcb + +2018-01-11 06:33 +0000 [2e44adf1c3] Tzafrir Cohen + + * cdr_mysql: split mysql init out of my_load_module + + Split out mysql connection parts to a separate my_connect_db(). + + ASTERISK-27572 + + Change-Id: If2ee676056067cc693ff08be68ee4944bf35b49f + +2018-05-04 16:07 +0000 [8f55f7c333] Matthew Fredrickson + + * res_hep: Adds hostname resolution support for capture_address + + Previously, only an IP address would be accepted for the capture_address config + setting in hep.conf. This change allows capture_address to be a resolvable + hostname or an IP address. + + ASTERISK-27796 #close + Reported-By: Sebastian Gutierrez + + Change-Id: I33e1a37a8b86e20505dadeda760b861a9ef51f6f + +2018-04-20 18:12 +0000 [7528b86cad] Joshua Colp + + * stream: Make the topology a reference counted object. + + The stream topology has no lock of its own resulting in + another lock protecting it in some way (for example the + channel lock). If multiple channels are being juggled at + the same time this can be problematic. This change makes + the topology a reference counted object instead which + guarantees it will remain valid even without the channel + lock being held. + + Change-Id: I4f4d3dd856a033ed55fe218c3a4fab364afedb03 + +2018-03-21 07:30 +0000 [6301531416] Tzafrir Cohen + + * chan_dahdi: Configurable dialed digit timeouts + + Analog phones dial overlap dialing and it is chan_dahdi's job to read the + numbers. It has three timeout constants that this commit converts to + channel-level configuration options: + + * firstdigit_timeout: Default time (ms) to detect first digit + + * interdigit_timeout: Default time (ms) to detect following digits + + * matchdigit_timeout: Default time (ms) to wait in case of ambiguous + match. This happens when the dialed digits match a number in the current + context but are also the prefix of another number. + + Change-Id: Ib728fa900a4f6ae56d1ed810aba61b6593fb7213 + +2018-05-03 06:34 +0000 [de3ca9bada] Joshua Colp + + * res_ari: Remove requirement that body exists when debug is on. + + The "ari set debug" code for incoming requests incorrectly assumed + that all requests would contain a body. If one did not exist the + request would be incorrectly rejected. The response that was sent + was also incomplete as an incorrect function was used to construct + the response. + + The code has now been changed to no longer require a request to have + a body and the response updated to use the correct function. + + ASTERISK-27801 + + Change-Id: I4eef036ad54550a4368118cc348765ecac25e0f8 + +2018-04-30 15:15 +0000 [069a0b7593] Sean Bright + + * iostreams: Add some documentation for the ast_iostream_* functions + + Change-Id: Id71b87637f0a484eb5a1cd26c3d1c7c15c7dcf26 + +2018-05-02 07:43 +0000 [239074c759] Sean Bright + + * pjsip: Increase maximum number of usable ciphers & other cleanups + + * Increase maximum number of ciphers from 100 to 256 (or whatever + PJ_SSL_SOCK_MAX_CIPHERS is #define'd to) + + * Simplify logic in cipher_name_to_id() + + * Make signed/unsigned comparison consistent + + Re: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897412 + + Reported by: Ondřej Holas + + Change-Id: Iea620f03915a1b873e79743154255c3148a514e7 + +2018-04-30 17:24 +0000 [11b7de82c5] Richard Mudgett + + * res_pjsip/pjsip_distributor.c: Add missing off-nominal request response. + + Change-Id: I389579b39c523d1d1e8ce020ef549a8bb5781c9b + +2018-04-30 17:20 +0000 [6cab3c836a] Richard Mudgett + + * res_pjsip/pjsip_distributor.c: Pull some assignments out of if tests. + + Change-Id: I3d30d638b53a4bbe9bf9aad853c649d583894112 + +2018-04-30 09:38 +0000 [afdca5c68c] Joshua Colp + + * res_rtp_asterisk: Always update SRTP on local SSRC change. + + When the local SSRC changes we need to update the SRTP information + so that the proper key is used. This is commonly done as a result + of bridging two channels together. Previously we only updated + the SRTP information if media had already flowed, but in practice + the channel driver may have already performed SRTP negotiation and + set up the previous SSRC. We now always do it on a local SSRC + change. + + ASTERISK-27795 + ASTERISK-27800 + + Change-Id: Ia7c8e74c28841388b5244ac0b8fd6c1dc6ee4c10 + +2018-02-13 12:55 +0000 [0827d5cc53] Gaurav Khurana + + * Add the ability to read the media file type from HTTP header for playback + + How it works today: + media_cache tries to parse out the extension of the media file to be played + from the URI provided to Asterisk while caching the file. + + What's expected: + Better will be to have Asterisk get extension from other ways too. One of the + common ways is to get the type of content from the CONTENT-TYPE header in the + HTTP response for fetching the media file using the URI provided. + + Steps to Reproduce: + Provide a URL of the form: http://host/media/1234 to Asterisk for media + playback. It fails to play and logs show the following error line: + + [Sep 15 15:48:05] WARNING [29148] [C-00000092] file.c: + File http://host/media/1234 does not exist in any format + + Scenario this issue is blocking: + In the case where the media files are stored in some cloud object store, + following can block the media being played via Asterisk: + + Cloud storage generally needs authenticated access to the storage. The way + to do that is by using signed URIs. With the signed URIs there's no way to + preserve the name of the file. + In most cases Cloud storage returns a key to access the object and preserving + file name is also not a thing there + + ASTERISK-27286 + + Reporter: Gaurav Khurana + + Change-Id: I1b14692a49b2c1ac67688f58757184122e92ba89 + +2018-04-25 01:57 +0000 [9c9f314f64] Christof Lauber + + * pbx_lua: Support displaying lua error message if no debug table exists + + The lua_error_function assumed that lua's debug table and traceback function + are always accessible, which is not the case. This fixes the error message + 'Error in the lua error handler' triggred by switch exec() function. + If this happens lua's error message is shown without traceback. + + Change-Id: I34ba0a098f1ae06a3af7b4d1b098bd43f42f96c8 + +2017-12-11 12:34 +0000 [882e79b77e] Joshua Colp + + * pjsip: Rewrite OPTIONS support with new eyes. + + The OPTIONS support in PJSIP has organically grown, like many things in + Asterisk. It has been tweaked, changed, and adapted based on situations + run into. Unfortunately this has taken its toll. Configuration file + based objects have poor performance and even dynamic ones aren't that + great. + + This change scraps the existing code and starts fresh with new eyes. It + leverages all of the APIs made available such as sorcery observers and + serializers to provide a better implementation. + + 1. The state of contacts, AORs, and endpoints relevant to the qualify + process is maintained. This state can be updated by external forces (such + as a device registering/unregistering) and also the reload process. This + state also includes the association between endpoints and AORs. + + 2. AORs are scheduled and not contacts. This reduces the amount of work + spent juggling scheduled items. + + 3. Manipulation of which AORs are being qualified and the endpoint states + all occur within a serializer to reduce the conflict that can occur with + multiple threads attempting to modify things. + + 4. Operations regarding an AOR use a serializer specific to that AOR. + + 5. AORs and endpoint state act as state compositors. They take input + from lower level objects (contacts feed AORs, AORs feed endpoint state) + and determine if a sufficient enough change has occurred to be fed further + up the chain. + + 6. Realtime is supported by using observers to know when a contact has + been registered. If state does not exist for the associated AOR then it + is retrieved and becomes active as appropriate. + + The end result of all of this is best shown with a configuration file of + 3000 endpoints each with an AOR that has a static contact. In the old + code it would take over a minute to load and use all 8 of my cores. This + new code takes 2-3 seconds and barely touches the CPU even while dealing + with all of the OPTIONS requests. + + ASTERISK-26806 + + Change-Id: I6a5ebbfca9001dfe933eaeac4d3babd8d2e6f082 + +2017-12-22 13:11 +0000 [661fec4b59] Richard Mudgett + + * core: Remove unused/incomplete SDP modules. + + Change-Id: Icc28fbdc46f58e54a21554e6fe8b078f841b1f86 + +2018-04-18 15:59 +0000 [ff652711c7] Kevin Harwell + + * translate: generic plc not filled in after translation + + If during translation a codec could not handle a given frame the translation + core would return NULL, thus not passing along the "missing" frame. Due to this + there was no frame to apply generic plc to, thus rendering it useless. + + This patch makes it so the translation core produces an interpolated slin frame + in the cases where an attempt was made to translate to slin, but failed. This + interpolated frame is then passed along and can be used by the generic plc + algorithms to fill in the frame. + + ASTERISK-27814 #close + + Change-Id: I133d084da87adef913bf2ecc9c9240e3eaf4f40a + +2018-04-20 07:40 +0000 [de9c0ede4a] Joshua Colp + + * bridge_softmix: Fix sporadic incorrect video stream mapping. + + When an externally initiated renegotiation occurred it was + possible for video streams to be incorrectly remapped, + resulting in no video flowing to some receivers. + + This change ensures that only the video source sets up + mappings and also that removed streams do not have mappings + set up. + + Change-Id: Iab05f2254df3606670774844bb0935f833d3a9b0 + +2018-04-20 14:07 +0000 [c481afe873] Alexander Anikin + + * chan_ooh323: fix ooManualProgress/ooManualRingback on ooh323 debuggin on + + Call ooManualProgress/Ringback outside of ast_debug function + when ooh323 debugging is on + + ASTERISK-27812 #close + ASTERISK-26893 #close + Reported by: Dimos, Marco Giordani + + Change-Id: I5873762e4f05824e7b6e94a19dd4eb56adbbbb79 + +2018-04-19 13:44 +0000 [5712a0ae52] Joshua Colp + + * bridge_softmix: Fix some REMB bugs. + + This change fixes a bug where a REMB collector may be + freed twice, and also tweaks REMB combining such that if + there is no bitrate from anyone (or there are no sources) + we report 0 instead of using an old bitrate. + + ASTERISK-27804 + + Change-Id: Ia9dc9c150043890ee7ff85e9cdec007f1a77fcfd + +2018-04-20 07:13 +0000 [fe072f4405] Alexander Traud + + * BuildSystem: Enable IMAP storage on FreeBSD and DragonFly BSD. + + ASTERISK-27639 + + Change-Id: I1347f3f2f3737010d0a80a5c30b5aaf71cf3ccb0 + +2018-04-20 05:50 +0000 [efe40ff671] Alexander Traud + + * BuildSystem: Add DragonFly BSD. + + ASTERISK-27820 + + Change-Id: I310896143e94d65da1c2be3bb448204a8b86d557 + +2018-04-20 05:40 +0000 [d54637373a] Alexander Traud + + * menuselect: Add DragonFly BSD. + + In DragonFly BSD, added libraries from ports are placed into /usr/local. + Therefore, this directory must be added for the preprocessor, compiler, and + linker. + + Beside that, the script ./configure was updated: + * OSARCH list was outdated and not used, removed. + * AC_CANONICAL_BUILD was not used. + * _REENTRANT, this feature test macro is obsolete. + + ASTERISK-27820 + + Change-Id: I186d88d99cfa4de6569888e12ac97bd2f441c422 + +2018-04-20 05:18 +0000 [6e9a612293] Alexander Traud + + * install_prereq: Add DragonFly BSD. + + ASTERISK-27820 + + Change-Id: I718ddb000fe5184b1bdc7759da67a370a7520144 + +2018-04-18 11:41 +0000 [b437656c2e] Chris-Savinovich + + * "confbridge show profile bridge" does not output "sfu" when video_mode is sfu + + Fixes a bug on the "confbridge show profile bridge" cli command + that showed "video_mode=no video" when video_mode was set + to "sfu" + + ASTERISK-27418 #close + + Change-Id: I481e3172c7f872664c7ac7809879d541c9f031e9 + +2018-04-18 15:40 +0000 [179ae87cf4] Corey Farrell + + * Build System: Add missing ASTMM_LIBC to flex output. + + Redirect libc allocation functions to use Asterisk functions for + main/ast_expr2f.c and res/ael/ael_lex.c. This will resolve errors + produced by astmm.h when these files are regenerated, though other + issues still remain. + + ASTERISK~27813 + + Change-Id: I7263e9e4217a17bde4ffaa2087a8f8aeb2a8588c + +2018-04-18 13:40 +0000 [80e6952013] Sean Bright + + * format_pcm: Correct behavior of fseek and ftell for G.722 + + There are twice as many samples in the same number of bytes, so redefine + some of the G.722 format functions in terms of their PCM counterparts. + + Change-Id: I6a8c7352624b930a5f2d9e4857f75283fa5dd9f9 + +2018-04-17 05:33 +0000 [95e8450194] Alexander Anikin + + * chan_ooh323: introduce localras config parameter + + Introduce localras parameter that specify source IP + for connecting to Gatekeeper. Useful for multihome configurations. + + ASTERISK-25129 #close + Reported by: Dmitry Melekhov + Tested by: Dmitry Melekhov + + Change-Id: I0b604b01793f3e02a776502659e07cd3fc7e3097 + +2018-04-18 05:32 +0000 [446320f1d4] Alexander Anikin + + * chan_ooh323: Fix cppcheck warnings + + Fix cppcheck warnings about redundant conditions and possible + null pointer usage + + ASTERISK-27793 #close + Reported by: Ilya Shipitsin + Tested by: Ilya Shipitsin + + Change-Id: I0b31933b062a23331dbac9a82b8bcfe345f406f6 + +2018-04-04 13:12 +0000 [8de3fa2b56] Joshua Colp + + * bridge_softmix / app_confbridge: Add support for REMB combining. + + This change adds the ability for multiple REMB reports in + bridge_softmix to be combined according to a configured + behavior into a single report. This single report is sent + back to the sender of video, which adjusts the encoding bitrate + to be at or below the bitrate of the report. The available + behaviors are: lowest, highest, and average. Lowest uses the + lowest received bitrate. Highest uses the highest received + bitrate. Average goes through the received bitrates adding + them to the previous average and creates a new average. + + Other behaviors can be added in the future and the existing + average one may be adjusted, but this provides the foundation + to do so. + + Support for configuring which behavior to use has been + added to app_confbridge. + + ASTERISK-27804 + + Change-Id: I9eafe4e7c1f72d67074a8d6acb26bfcf19322b66 + +2018-04-13 15:14 +0000 [f79a372941] George Joseph + + * streams: Add string metadata capability + + Replaces the never used opaque data array. + + Updated stream tests to include get/set metadata and + stream clone with metadata. + + Added stream metadata dump to "core show channel" + + Change-Id: Id7473aa4b374d7ab53046c20e321037ba9a56863 + +2018-04-13 15:17 +0000 [f7e7ce6ba2] George Joseph + + * utils: Add ast_assert_return + + Similar to pjproject's PJ_ASSERT_RETURN macro, this one will do the + following... + + If the assert passes... NoOp + + If the assert fails and AST_DEVMODE is defined, execute ast_assert() + then, if DO_CRASH isn't set, return from the calling function with + the supplied value. + + If the assert fails and AST_DEVMODE is not defined, return from the + calling function with the supplied value. + + The macro will execute a return without a value if one isn't suppled. + + Change-Id: I0003844affeab550d5ff5bca7aa7cf8a559b873e + +2018-04-10 16:09 +0000 [8135558bab] George Joseph + + * app_sendtext: Enhance SendText to support Enhanced Messaging + + SendText now accepts new channel variables that can be used + to override the To and From display names and set the Content-Type + of a message. Since you can now set Content-Type, other text/* + content types are now valid. + + Change-Id: I648b4574478119f95de09d9f08e9595831b02830 + +2017-09-27 11:44 +0000 [4fb7967c73] George Joseph + + * bridge_softmix: Forward TEXT frames + + Core bridging and, more specifically, bridge_softmix have been + enhanced to relay received frames of type TEXT or TEXT_DATA to all + participants in a softmix bridge. res_pjsip_messaging and + chan_pjsip have been enhanced to take advantage of this so when + res_pjsip_messaging receives an in-dialog MESSAGE message from a + user in a conference call, it's relayed to all other participants + in the call. + + res_pjsip_messaging already queues TEXT frames to the channel when + it receives an in-dialog MESSAGE from an endpoint and chan_pjsip + will send an MESSAGE when it gets a TEXT frame. On a normal + point-to-point call, the frames are forwarded between the two + correctly. bridge_softmix was not though so messages weren't + getting forwarded to conference bridge participants. Even if they + were, the bridging code had no way to tell the participants who + sent the message so it would look like it came from the bridge + itself. + + * The TEXT frame type doesn't allow storage of any meta data, such + as sender, on the frame so a new TEXT_DATA frame type was added that + uses the new ast_msg_data structure as its payload. A channel + driver can queue a frame of that type when it receives a message + from outside. A channel driver can use it for sending messages + by implementing the new send_text_data channel tech callback and + setting the new AST_CHAN_TP_SEND_TEXT_DATA flag in its tech + properties. If set, the bridging/channel core will use it instead + of the original send_text callback and it will get the ast_msg_data + structure. Channel drivers aren't required to implement this. Even + if a TEXT_DATA enabled driver uses it for incoming messages, an + outgoing channel driver that doesn't will still have it's send_text + callback called with only the message text just as before. + + * res_pjsip_messaging now creates a TEXT_DATA frame for incoming + in-dialog messages and sets the "from" to the display name in the + "From" header, or if that's empty, the caller id name from the + channel. This allows the chat client user to set a friendly name + for the chat. + + * bridge_softmix now forwards TEXT and TEXT_DATA frames to all + participants (except the sender). + + * A new function "ast_sendtext_data" was added to channel which + takes an ast_msg_data structure and calls a channel's + send_text_data callback, or if that's not defined, the original + send_text callback. + + * bridge_channel now calls ast_sendtext_data for TEXT_DATA frame + types and ast_sendtext for TEXT frame types. + + * chan_pjsip now uses the "from" name in the ast_msg_data structure + (if it exists) to set the "From" header display name on outgoing text + messages. + + Change-Id: Idacf5900bfd5f22ab8cd235aa56dfad090d18489 + +2018-04-17 07:06 +0000 [8a1ffb050b] Alexander Traud + + * utils/pval: Add -lBlocksRuntime for compiler clang conditionally. + + ASTERISK-27809 + + Change-Id: I930b364a33d54cc08dedfcd5bb45f7e83242f134 + +2018-04-17 05:27 +0000 [3d9345e3ae] Alexander Traud + + * chan_vpb: Avoid GNU old-style field designator extension. + + clang 6.0 warned about this. Beside that, this change removes the used variable + 'desc'. + + ASTERISK-27808 + + Change-Id: Ia26bdcc0a562c058151814511cfcf70ecafa595b + +2018-04-09 17:09 +0000 [f5d5083ea7] Ben Ford + + * res_rtp_asterisk: Add support for receiving and handling NACK requests. + + Adds the ability to receive and handle incoming NACK requests if + retransmissions are enabled. If retransmissions are enabled, a data + buffer is allocated that stores packets being sent. If a NACK request + is received, the packet requested for retransmission is sent if it is + still in the buffer. In the same request, if any of the following 16 + packets are marked as not received, those will be sent as well if + available, as outlined in RFC4585. + + Also changes RTCP RR and SR to use media source SSRC instead of packet + source SSRC when determining which instance to use for RTCP reports. + + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + + ASTERISK-27806 #close + + Change-Id: I7f7f124af3b9d5d2fd9cffc6ba8cb48a6fff06ec + +2018-04-16 16:38 +0000 [d50d637764] Richard Mudgett + + * stringfields: Collect extended stringfields into the stringfield section. + + Use of extended stringfields is a temporary mechanism to avoid ABI + breakage in released branches without resorting to more inconvienient + methods. + + * Collect existing extended stringfields into the parent stringfield + section of the struct. + + Change-Id: I8d46d037801b4518837c3ea4b6df95ceadc9436b + +2018-04-13 14:32 +0000 [4aeec6100f] Ben Ford + + * res_musiconhold: Don't restart MOH from beginning after announcement. + + This reverts a problem introduced by the fix for ASTERISK_24329. + Now, when an announcement is played while waiting in a queue, music on + hold will not restart from the beginning of the sound file and will + instead pick up where it left off. However, the incorrect behavior in + ASTERISK_24329 is now present again; if an announcement X seconds + long is played when music on hold starts, music on hold will start X + seconds into the file. + + ASTERISK-27774 #close + Reported by: lvl + + Change-Id: I86b2885ee7063268f9b9747eddb788336ade989b + +2018-03-28 15:13 +0000 [3bb6cf43b5] Richard Mudgett + + * pjsip_scheduler.c: Add ability to trace scheduled tasks. + + When a scheduled task is created you can pass in the + AST_SIP_SCHED_TASK_TRACK flag. This new flag causes scheduling events to + be logged. + + Change-Id: I91967eb3d5a220915ce86881a28af772f9a7f56b + +2018-03-27 11:04 +0000 [237d341bbd] Richard Mudgett + + * res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations. + + ast_sip_push_task_synchronous() did not necessarily execute the passed in + task under the specified serializer. If the current thread is any + registered pjsip thread then it would execute the task immediately instead + of under the specified serializer. Reentrancy issues could result if the + task does not execute with the right serializer. + + The original reason ast_sip_push_task_synchronous() checked to see if the + current thread was a registered pjsip thread was because of a deadlock + with masquerades and the channel technology's fixup callback + (ASTERISK_22936). A subsequent masquerade deadlock fix (ASTERISK_24356) + involving call pickups avoided the original deadlock situation entirely. + The PJSIP channel technology's fixup callback no longer needed to call + ast_sip_push_task_synchronous(). + + However, there are a few places where this unexpected behavior is still + required to avoid deadlocks. The pjsip monitor thread executes callbacks + that do calls to ast_sip_push_task_synchronous() that would deadlock if + the task were actually pushed to the specified serializer. I ran into one + dealing with the pubsub subscriptions where an ao2 destructor called + ast_sip_push_task_synchronous(). + + * Split ast_sip_push_task_synchronous() into + ast_sip_push_task_wait_servant() and ast_sip_push_task_wait_serializer(). + ast_sip_push_task_wait_servant() has the old behavior of + ast_sip_push_task_synchronous(). ast_sip_push_task_wait_serializer() has + the new behavior where the task is always executed by the specified + serializer or a picked serializer if one is not passed in. Both functions + behave the same if the current thread is not a SIP servant. + + * Redirected ast_sip_push_task_synchronous() to + ast_sip_push_task_wait_servant() to preserve API for released branches. + + ASTERISK_26806 + + Change-Id: Id040fa42c0e5972f4c8deef380921461d213b9f3 + +2018-03-21 19:43 +0000 [c2f85e881d] Richard Mudgett + + * pjsip_scheduler.c: Fix some corner cases. + + * Fix the periodic interval wander because it may take significant time + between the sched thread queueing the task in the serializer and the + serializer actually executing the task. The time it takes to actually + execute the task was already taken into account. + + * Pass a schtd ref to the serializer when we queue a scheduled task on + the serializer. We don't want it going away on us while it is in the + serializer queue. + + * Skip the scheduled task if the task was canceled between queueing the + task to the serializer and the serializer actually executing the task. + + * Reorder struct ast_sip_sched_task to avoid unnecessary padding. Removed + task_id and added next_periodic. + + * Hold a ref to the passed in serializer so the serializer cannot go away + on the scheduled task. + + ASTERISK_26806 + + Change-Id: I6c8046b75f6953792c8c30e55b836a4291143f24 + +2018-03-22 19:09 +0000 [96c4a57edf] Richard Mudgett + + * pjsip_scheduler.c: Sort "pjsip show scheduled_tasks" output. + + * A side benefit is that the scheduled tasks are not completely blocked + while the CLI command executes. + + * Adjusted the "Task Name" column width to have more room for longer + names. + + Change-Id: Iec64aa463ee8b10eef90120e00c38b1fb444087e + +2018-04-02 15:59 +0000 [429c758e48] Evandro Cesar Arruda + + * cdr_mysql: Compile error because MYSQL_PORT definition is missing + + If it is not defined, it will add MYSQL_PORT definition. After some + research on MySQL/MariaDB development tree, I couldn't find any reference + to MYSQL_PORT definition in include files. + + ASTERISK-27782 #close + + Change-Id: Ieee56c836fc2e8bd021c456145bba04c6068bb77 + +2018-04-09 20:00 +0000 [0747ac893b] Chris-Savinovich + + * res_pjsip_session: Rewrite o= with external_media_address. + + It now appends the external IP address on the + o= line of the SDP packet. The decision was made to write + the numeric IP address as opposed to the RFC that states + the FQDN should be used if and when available. We believe + the usage of literal IP address will help avoid + potential problems. + + ASTERISK-27614 #close + + Change-Id: I84f3360f3606b8c4e8d161edb228799ec0b8a302 + +2018-02-22 12:18 +0000 [1cd704de36] Nathan Bruning + + * res_pjsip_notify.c: enable in-dialog NOTIFY + + This patch adds support to send in-dialog SIP NOTIFY commands on + chan_pjsip channels, similar to the functionality recently added + for chan_sip (ASTERISK_27461). + + This extends res_pjsip_notify to allow for in-dialog messages. + + ASTERISK-27697 + + Change-Id: If7f3151a6d633e414d5dc319d5efc1443c43dd29 + +2018-03-22 13:35 +0000 [7157dcf83b] Richard Mudgett + + * pjsip_scheduler.c: Fix ao2 usage errors. + + * Removed several invalid uses of OBJ_NOLOCK. These uses resulted in the + 'tasks' container being accessed without a lock in a multi-threaded + environment. A recipe for crashes. + + * Removed needlessly obtaining schtd object references. If the caller + providing you a pointer to an object doesn't have a valid reference then + you cannot safely get one from it. + + * Getting a ref to 'tasks' when you aren't copying the pointer into + another location is useless. The 'tasks' container pointer is global. + + * Removed many unnecessary uses of RAII_VAR. + + * Make ast_sip_schedule_task() name parameter const. + + ASTERISK_26806 + + Change-Id: I5c62488e651314e2a1dbc01f5b078a15512d73db + +2018-03-23 06:49 +0000 [879e592baf] Corey Farrell + + * Build System: Enable python3 compatibility. + + * Consistently use spaces in rest-api-templates/asterisk_processor.py. + * Exclude third-party from docs/full-en_US.xml. + * Add docs/full-en_US.xml to .gitignore. + * Use list() to convert python3 view. + * Use python3 print function. + * Replace cmp() with equivalent equation. + * Replace reference to out of scope subtype variable with name + parameter. + * Use unescaping triple bracket notation in mustache templates where + needed. This causes behavior of Python2 to be maintained when using + Python3. + * Fix references to has_websocket / is_websocket in + res_ari_resource.c.mustache. + * Update calculation of has_websocket to use any(). + * Use unicode mode for writing output file in transform.py. + * Replace 'from swagger_model import *' with explicit import of required + symbols. + + I have not tested spandspflow2pcap.py or voicemailpwcheck.py, only the + print syntax has been fixed. + + Change-Id: If5c5b556a2800d41a3e2cfef080ac2e151178c33 + +2018-04-05 18:33 +0000 [0c03eab962] Richard Mudgett + + * res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge + + There is a problem when an INVITE-with-Replaces transfer targets a channel + in a ConfBridge. The transfer will unconditionally swap out the + ConfBridge channel. Unfortunately, the ConfBridge state will not be aware + of this change. Unexpected behavior will happen as a result since + ConfBridge channels currently can only be replaced by a masquerade and not + normal bridge channel moves. + + * We just need to pretend that the channel isn't in a bridge (like other + transfer methods already do) so the transfer channel will masquerade into + the ConfBridge channel. + + Change-Id: I209beb0e748fa4f4b92a576f36afa8f495ba4c82 + +2018-03-28 07:27 +0000 [c7bd554094] Joshua Colp + + * pjsip / res_rtp_asterisk: Add support for sending REMB + + This change allows chan_pjsip to be given an AST_FRAME_RTCP + containing REMB feedback and pass it to res_rtp_asterisk. + Once res_rtp_asterisk receives the frame a REMB RTCP feedback + packet is constructed with the appropriate contents and sent + to the remote endpoint. + + ASTERISK-27776 + + Change-Id: Ic53f821c1560d8924907ad82c4d9c0bc322b38cd + +2018-04-05 20:02 +0000 [39016e3582] Joshua Colp + + * res_rtp_asterisk: Fix minimum block word length for REMB. + + The minimum block word length is actually 4, not 5. + + Change-Id: I878542218225aed72c72bdf1b856fc822cd2d649 + +2018-04-05 18:48 +0000 [8a602f18db] Joshua Colp + + * res_rtp_asterisk: Queue video update on picture loss indication. + + The previous payload specific feedback handling was very single + minded in that it just assumed everything should trigger a video + update. This was changed but the handling of picture loss indication + was not added. The result was that video may not flow. This change + adds it explicitly in. + + Change-Id: I1894be02e39ee10a0af841b5a1dca5f0ec7d60b6 + +2018-04-05 17:40 +0000 [d72a2966da] Richard Mudgett + + * chan_sip.c: Fix INVITE with replaces channel ref leak. + + Given the below call scenario: + A -> Ast1 -> B + C <- Ast2 <- B + + 1) A calls B through Ast1 + 2) B calls C through Ast2 + 3) B transfers A to C + + When party B transfers A to C, B sends a REFER to Ast1 causing Ast1 to + send an INVITE with replaces to Ast2. Ast2 then leaks a channel ref of + the channel between Ast1 and Ast2. + + Channel ref leaks are easily seen in the CLI "core show channels" output. + The leaked channels appear in the output but you can do nothing with them + and they never go away unless you restart Asterisk. + + * Properly account for the channel refs when imparting a channel into a + bridge when handling an INVITE with replaces in handle_invite_replaces(). + The ast_bridge_impart() function steals a channel ref but the code didn't + account for how many refs were held by the code at the time and which ref + was stolen. + + * Eliminated RAII_VAR in handle_invite_replaces(). + + ASTERISK-27740 + + Change-Id: I7edbed774314b55acf0067b2762bfe984ecaa9a4 + +2018-03-21 19:40 +0000 [71a67a98c4] Richard Mudgett + + * res_pjsip: Update authenticate_qualify documentation. + + Change-Id: I3811de0014b1ffe96d4a3b49cddd5d4ca02ee5d4 + +2018-04-02 16:49 +0000 [6774913e82] Richard Mudgett + + * app_agent_pool.c: Fix off nominal ref leak. + + Change-Id: Ib427ffc2c802620eaafb08b1c2a17dddd8fb8eb6 + +2018-04-04 10:02 +0000 [e40fd7a232] Corey Farrell + + * Build System: Strip '-std=c99' from CFLAGS provided by libraries. + + Asterisk requires GNU C extensions. On some systems certain libraries + may incorrectly push -std=c99 into CFLAGS, thus breaking the build. + This change causes that flag to be stripped so the Asterisk build is not + broken by those libraries. This change is made for both pkgconfig and + tool based libraries. + + ASTERISK-27629 #close + + Change-Id: I13389613b194abbac77becf90cd950dc168704db + +2018-04-03 14:39 +0000 [66f13ed694] Corey Farrell + + * Build System: Fixes for configure script. + + * Replace all 'else if' statements with 'elif'. + * Use loop to detect versioned lua headers and libraries. + + The loop for detecting lua fixes a bug where LUA_INCLUDE would be + appended with the directory of every lua version after the first one is + found. + + Change-Id: I3276f9aee955014108345be6092f51c932b43a0f + +2018-04-02 08:53 +0000 [0f6431e8e4] Joshua Colp + + * app_confbridge / bridge_softmix: Add ability to configure REMB interval. + + This change adds a configuration option to app_confbridge which can be + used to set the interval at which we will send a combined REMB (remote + estimated maximum bitrate) frame to sources of video. The bridging API + has also been extended slightly to allow setting this so bridge_softmix + can use it. + + ASTERISK-27786 + + Change-Id: I0e49eae60f369c86434414f3cb8278709c793c82 + +2018-01-02 07:54 +0000 [f91263cf46] George Joseph + + * res_pjsip: Correct usages of pjproject's timer heap + + Fix some timer heap initializations and cancels to try and prevent + crashes and timer heap issues. + + Change-Id: I64885d190fa22097d1b55987091375541e57a7ee + +2018-03-25 13:35 +0000 [48720e7def] George Joseph + + * pjroject_bundled: Add already-destroyed check to tsx_timer_callback + + There have been cases that when the transaction timer callback is called + the tsx is already destroyed. This causes a crash. We now check the + tsx state and return if the tsx is already destroyed. + + Change-Id: If93acd5e48d9ca5bb553f2405d5afc836842fe1c + +2018-03-25 13:25 +0000 [7c03b2713e] George Joseph + + * pjproject_bundled: timer: Clean up usage of timer heap + + Added a new pj_timer_entry_reset function that resets a timer_entry + for re-use. + + Changed direct settings of timer_entry fields to use + pj_timer_entry_init and pj_timer_entry_reset. + + Fixed issues where timers were being rescheduled incorrectly. + + Change-Id: I5b624bfbc5c1429117484b9b24567293002148e6 + +2018-03-29 17:07 +0000 [97cc67b12f] Richard Mudgett + + * res_pjsip: Fix deadlock on reliable transport shutdown. + + A deadlock can happen when the PJSIP monitor thread is shutting down a + connection oriented transport (TCP/TLS) used by a subscription at the same + time as another thread tries to send something for that subscription. The + deadlock is between the pjsip monitor thread attempting to get the dialog + lock and another thread sending something for that dialog when it tries to + get the transport manager lock. + + * res_pjsip_pubsub.c: Avoid the deadlock by pushing the subscription + removal to the subscription serializer. + + * res_pjsip_registrar.c: Pushed off incoming registration contact removals + to a default serializer as a precaution. Removing the contacts involves + sorcery access which in this case will involve database access. Depending + upon the setup, the database may not be on the same machine and could take + awhile. We don't want to hold up the pjsip monitor thread with + potentially long access times. + + ASTERISK-27706 + + Change-Id: I56b647aea565f24dba33e9e5ebeed4cd3f31f8c4 + +2018-03-07 06:15 +0000 [f65488f546] Ross Beer + + * pjsip_transport_events.c: Fix crash using stale transport pointer. + + Apparently it is possible for the transport to be destroyed without + triggering the transport callback logic. As a result the transport gets + destroyed and we have a stale pointer in the active_transports container. + + * Invoke the transport monitor callback checks when the transport is + destroyed in addition to when it is disconnected and shutdown. + + ASTERISK-27688 + + Change-Id: Ia9b5469fea8f2b3f2d8476fae6b748a4d23e7261 + +2018-03-19 09:36 +0000 [879743ab8f] Ben Ford + + * test_data_buffer.c: Add unit tests for data buffer API. + + Added unit tests for the data buffer API. These tests include creating a + data buffer, putting payloads into the buffer, resizing the buffer, and + the nominal case for data buffer usage, which consists of adding + the max number of payloads to the buffer, checking to see if the correct + payloads are present, then adding more payloads and checking again to + see if the previous payloads were replaced or not. + + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + + Change-Id: Id5b599aa15a5e61d0ec080f97cd0c57bd07e6f8f + +2018-02-23 13:49 +0000 [138e0eff4e] Ben Ford + + * Add data buffer API to store packets. + + Adds a data buffer with a configurable size that can store different + kinds of packets (like RTP packets for retransmission). Given a number + it will store a data packet at that position relative to the others. + Given a number it will retrieve the given data packet if it is present. + This is purposely a storage of arbitrary things so it can be used not + just for RTP packets but also Asterisk frames in the future if needed. + The API does not internally use a lock, so it will be up to the user of + the API to properly protect the data buffer. + + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + + Change-Id: Iff13c5d4795d52356959fe2a57360cd57dfade07 + +2018-03-25 13:12 +0000 [a87141ddfd] George Joseph + + * pjproject_bundled: Add patch for pj_atomic crashes + + There have been some crashes in the past where something attempts + to use a pj_atomic after it's already been destroyed. This patch + tries to prevent it by making sure that pj_atomic_destroy sets + its mutex to NULL when it's done. The pj_mutex functions already check + for a NULL mutex and just return PJ_EINVAL. + + Teluu also added some checks to the win32 implementation as well. + + Change-Id: Id25f70b79fdedf44ead6e6e1763a4417d3b3f825 + +2018-03-21 08:52 +0000 [e14b0e960d] Joshua Colp + + * res_rtp_asterisk: Add support for raising additional RTCP messages. + + This change extends the existing AST_FRAME_RTCP frame type to be + able to contain additional RTCP message types, such as feedback + messages. The payload type is contained in the subclass which allows + knowing what is in the frame itself. + + The RTCP feedback message type is now handled and REMB[1] messages + are raised with their containing information. + + This also fixes a bug where all feedback messages were triggering + video updates instead of just FIR and FUR. + + Finally RTCP frames are now passed up through the Asterisk core to + what is handling the channel, mapped appropriately in the case of + bridging, and written to an outgoing stream. Since RTCP frames are + on a per-stream basis this is only done on multistream capable + channels. + + [1] https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 + + ASTERISK-27758 + ASTERISK-26366 + + Change-Id: I680da0ad8d5059d5e9655d896fb9d92e9da8491e + +2018-03-27 08:27 +0000 [455cee99ae] Florian Floimair + + * main: Update copyright notice with year 2018 + + Change-Id: I2d80bc5edf940fab914cba3d8a0fa0b5eb2a3148 + +2018-03-26 07:42 +0000 [48190c7f93] Guido Falsi + + * core: fix getopt(3) usage + + Setting optind = 0 is forced to 1 in glibc implementation, but + causes option parsing to be flawed in other implementations, for + example on FreeBSD. + + ASTERISK-27773 #close + + Change-Id: Ia548e69f8302e9754dbbedb6bc451c0700c66f61 + +2018-03-23 13:15 +0000 [07cf6b1437] Alexander Traud + + * install_prereq: Add Slackware (somehow). + + ASTERISK-27770 + + Change-Id: Ib87e0483c785542238cfe34c1e884d5a31edfaab + +2018-03-23 09:13 +0000 [307a295d00] Alexander Traud + + * install_prereq: Add Gentoo Linux. + + ASTERISK-27769 + + Change-Id: Ieb13293cd67481f3a33f58f6f7c8c3ee1e338e7a + +2018-03-17 01:02 +0000 [318bf45928] Corey Farrell + + * main/indications: Use ast_cli_completion_add for all completions. + + Change-Id: I371be01f178fb542a9fbe8d97e7ae21aa4d82c36 + +2018-03-21 14:54 +0000 [75715b95b4] Russell Bryant + + * app_originate: Add async option. + + Add an option to make app_originate not wait for the created channel + to answer. + + Change-Id: I7fc2facd77079abc6321f44e8bcd4e39298de2ae + Requested-by: Frederic Steinfels + Signed-off-by: Russell Bryant + +2018-03-22 07:27 +0000 [4f33f56a72] Alexander Traud + + * BuildSystem: pjsip_evsub_set_uas_timeout was not used (part 2). + + The previous change was not complete. + + ASTERISK-27435 + + Change-Id: I11082c14c0ef9c6af8c995084a6851337ea2a90f + +2018-03-22 05:43 +0000 [d6fda173a4] Alexander Traud + + * BuildSystem: With external editline, do not require libs for internal editline. + + ASTERISK-27761 + + Change-Id: Ib17a7415297a210cfcdbf149e4df9b6edadbfab6 + +2018-03-21 22:00 +0000 [a6d58c518a] Corey Farrell + + * core: Create main/options.c. + + This creates a separate source to 'own' symbols related to options.h and + paths.h. This significantly reduces the number of exports created by + main/asterisk.o. This change is required to eventually be able to + link unmodified Asterisk sources to utilities and/or stand-alone tests. + + ASTERISK~26245 + + Change-Id: I5cf184f4757f9363b80c9e678bdc35c477122380 + +2018-03-21 19:25 +0000 [745b5134cd] George Joseph + + * Revert "BuildSystem: In NetBSD, the Python Programming Language is python-X.Y." + + Something is causing a python2/python3 mismatch on Fedora27. + + PYTHON='/usr/bin/python2' + PYTHONDEV_CFLAGS='-I/usr/include/python3.6m ' + PYTHONDEV_INCLUDE='-I/usr/include/python3.6m ' + PYTHONDEV_LIB='-lpython3.6m ' + PYTHONDEV_LIBS='-lpython3.6m ' + + This reverts commit be0e9920b64e3b07501b299d131309b58f9b0ddf. + + Change-Id: I86dd102eb3ead199fe89178cdbadb36b4e2cfd1b + +2018-02-08 13:23 +0000 [411915af28] Corey Farrell + + * loader: Reserve space for additional pointers in ast_module_info. + + This creates 4 reserved pointers in case we need additional dependency + management fields. + + Change-Id: If991ec99b779df1b2dfbd38ce1a0cd79f9e01821 + +2018-03-20 15:28 +0000 [cf73a4203f] Kevin Harwell + + * bridge_softmix: Clear "talking" when a channel is put on hold + + This patch clears the talking flag from the channel (if already set), and + notifies listeners when that channel is put on hold. Note however, if the + endpoint continues to send audio frames and these are received by the bridge + then that channel will be put back into a "talking" state even though they + are on hold. + + ASTERISK-27755 #close + + Change-Id: I930e16c4662810f9f02043d69062f88173c5e2ef + +2018-03-20 11:53 +0000 [bfefde5b07] Alexander Traud + + * BuildSystem: For consistency, avoid extra libs to be empty. + + AST_EXT_LIB_CHECK has several optional parameters. When an optional parameter + is left empty, [] is used to indicate this. However, this is done in the script + ./configure only then, when a further parameter is not empty. For example, when + no extra libraries are needed to test the checked library, parameter 5 is not + mentioned. Except parameter 6 and higher are used, then parameter 5 must be + empty. + + However, this general rule was broken + * four times for parameter 5 (extra libs) and + * three times for parameter 4 (header) + as found via the Regular Expression \[\]\). In case of parameter 5, all cases + were changed, because that happened for no reason. In case of parameter 4, an + [] improves readability actually. Therefore for parameter 4, the only case which + did not do it was changed. All this aims to create more consistency: Only do + something different if there is a reason to do so. + + Change-Id: I037ef170cf1ad94497151a9ea5071a31c656cafe + +2018-03-20 09:58 +0000 [8bd5980e14] Ivan Poddubny + + * func_channel: Delete dead CHANNEL_TRACE code + + The functions behind the flag and the flag itself were removed + from Asterisk 12 as incompatible with the new architecture. + + Change-Id: I058493ef7a53ee290fd225bbcbb07bf46b623ccf + +2018-03-17 21:26 +0000 [040bb21771] Corey Farrell + + * core: Remove additional symbols. + + Remove symbols that are depreacated and replaced: + * ast_channel_datastore_alloc + * ast_channel_datastore_free + * ast_channel_cmpwhentohangup + * ast_channel_setwhentohangup + * config_text_file_save + * devstate2str + * ast_device_state_changed + * ast_device_state_changed_literal + * ast_verbose_get_by_module + + Remove unused symbols: + * channelreloadreason2txt (last used in Asterisk 12). + + Remove unused ast_options flags: + * AST_OPT_FLAG_END_CDR_BEFORE_H_EXTEN / ast_opt_end_cdr_before_h_exten + * AST_OPT_FLAG_VERBOSE_MODULE / ast_opt_verb_module + * AST_OPT_FLAG_INITIATED_SECONDS + + Change-Id: I841255995d195f8efc1ed47af9c7a2f131c08645 + +2018-03-17 20:03 +0000 [de77cf8698] Corey Farrell + + * core: Remove dead symbols from asterisk.exports.in. + + * dahdi_chan_name + * dahdi_chan_name_len + * dahdi_chan_mode + * __manager_event + * dialed_interface_info + + Added comment about __progname and environ being needed for FreeBSD to + prevent accidental removal in the future. + + Change-Id: I3ae026bc541cd9cb572be2ffa95fc359547642b5 + +2018-03-17 01:39 +0000 [201762f161] Corey Farrell + + * named_acl: Use ast_cli_completion_add. + + Change-Id: I317a82de976bbdbfe4352c243e32a7bb8f66c377 + +2018-03-17 01:58 +0000 [645203a422] Corey Farrell + + * main/sounds: Use ast_cli_completion_add. + + Change-Id: I140e1137906bbfcdb61c0c6304159be459ad873e + +2018-03-16 10:19 +0000 [5d097f8236] George Joseph + + * channel.c: Allow generic plc then channel formats are equal + + If the two formats on a channel are equal, we don't transcode and since + the generic plc needs slin to work, it doesn't get invoked. + + * A new configuration option "genericplc_on_equal_codecs" was added + to the "plc" section of codecs.conf to allow generic packet loss + concealment even if no transcoding was originally needed. + Transcoding via SLIN is forced in this case. + + ASTERISK-27743 + + Change-Id: I0577026a179dea34232e63123254b4e0508378f4 + +2018-03-17 01:09 +0000 [8d01ec572d] Corey Farrell + + * manager: Use ast_cli_completion_add for completion generators. + + Change-Id: I658141c6ec490a3e866b02d2afea757928ceaabf + +2018-03-17 02:16 +0000 [2c1ad2f510] Corey Farrell + + * main/test: Use ast_cli_completion_add. + + Change-Id: I5133ff2ba4e030f9733fb3d050c863d72a22ae6b + +2018-03-18 10:16 +0000 [115939caeb] Joshua Colp + + * rtp: Add REMB RTP property and set it on PJSIP video RTP. + + This change adds a property to RTP instances to indicate that + REMB support is enabled and that sending/receiving should be + passed through. + + This also enables it on video RTP instances in PJSIP if + WebRTC support is enabled. + + Finally the goog-remb extension is added to the SDP using + the rtcp-fb attribute to indicate our support for it. + + Details about REMB can be found on the draft document for it: + https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 + + Change-Id: I1902dda1c0882bd1a0d71b2f120684b44b97e789 + +2018-03-17 04:31 +0000 [8c25a72d57] Corey Farrell + + * main/bridge: Use ast_cli_completion_add. + + Change-Id: I3775a696d6a57139fdf09651ecb786bcf1774509 + +2018-03-17 16:41 +0000 [5b40441197] Corey Farrell + + * core: Minor cleanup of ast_el_read_char. + + * Define CHAR_T_LIBEDIT and CHAR_TO_LIBEDIT based on + HAVE_LIBEDIT_IS_UNICODE. This avoids needing to repeatedly use + conditional blocks, eliminates having multiple function prototypes. + * Remove parenthesis from return values. + * Add missing code block brackets {}. + * Reduce use of 'else' conditional statements where possible. + + Change-Id: I4315328ebea2f62641faf6881de2ac20a9f9d08e + +2018-03-17 10:49 +0000 [e61b50b67a] Alexander Traud + + * BuildSystem: Check for header file of OGG. + + Asterisk uses various symbols of the shared library libogg within the module + format_ogg_vorbis. However, the source code of that module did not include the + header file of libogg explicitly but implicitly. Because that header was not + included before Asterisk 14, the script ./configure was told not to check for + it. + + Anyway, even Asterisk 13 LTS uses symbols of libogg. Therefore, that header + should be included explicitly. Therefore, ./configure should check for that + header. + + Change-Id: I98c50d56311b68880d1084fcc62c35ab2f8692db + +2018-03-09 06:26 +0000 [f697025ae5] Alexander Traud + + * BuildSystem: When no download utility is available, display the explanation. + + ./configure --with-pjproject-bundled + did not display an explanation, when no download utility like wget, curl, or + fetch was installed beforehand, although an explanation existed in code. This + happened because the code expected the variable DOWNLOAD_TO_STDOUT to be empty. + However, the script ./configure set that variable always. + + Change-Id: I64c99b76a03525c69471e5055bf124b36a51bbd4 + +2018-03-17 05:00 +0000 [10a978829e] Alexander Traud + + * BuildSystem: Remove unused dependency on libltdl. + + Asterisk does not need the development package of libltdl, because it does not + use any symbol of -lltdl directly. Instead, it uses the runtime package via the + shared library -lodbc. On the supported platforms, that shared library declares + its dependency on -lltdl correctly, otherwise AST_EXT_LIB_CHECK would have + failed. + + ASTERISK-27745 + + Change-Id: Icd315809b8e7978203431f3afb66240dd3a040ba + +2018-03-17 02:25 +0000 [1136a22a1e] Corey Farrell + + * main/translate: Use ast_cli_completion_add. + + Change-Id: I0e2402660e54d91f74ab0804c62a5b1925577413 + +2018-03-17 02:00 +0000 [91ac95993e] Corey Farrell + + * main/taskprocessor: Use ast_cli_completion_add. + + Change-Id: Ie5f812a988ed811fd11967151932de62bc131b48 + +2018-03-15 15:06 +0000 [3ad56aa929] Corey Farrell + + * main/config: Use ast_cli_completion_add for reload completion. + + Change-Id: Ia3fa4c03f2285a1ec8814bbe7f4624ead9111ad1 + +2018-03-17 00:51 +0000 [9e335f22e7] Corey Farrell + + * aco: Use ast_cli_completion_add for 'config show help'. + + In addition this removes: + * RAII_VAR usage + * Duplicate check of pos + * Unneeded arguments. + + Change-Id: I2da8eac2670d1d8d6474c04037129804f55ebf39 + +2018-03-14 04:27 +0000 [4d1c9d8711] Corey Farrell + + * core: Stop using AST_INLINE_API for allocator functions. + + This replaces AST_INLINE_API allocators in utils.h with real functions + implemented in astmm.c. Associated macro's are also moved from utils.h + to astmm.h. + + Remove menuselect conflicts between MALLOC_DEBUG and DEBUG_CHAOS as they + can now be combined. + + This has multiple benefits: + * Simplifies asterisk/utils.h by removing inline functions and use of + the logger. + * Removal of these inline functions decreases size of Asterisk and + module binaries by 1% or more. + * Puts memory management functions together with and without + MALLOC_DEBUG enabled, simplifying management of the code. + * Enables DEBUG_CHAOS for ASTMM_REDIRECT and bundled pjproject. + + Change-Id: If9df4377f74bdbb627461b27a473123e05525887 + +2018-02-27 03:01 +0000 [ecc846b26b] Florian Floimair + + * app_dial: Enable early-media video + + Certain applications (e.g. door-phone) require that also video is transmitted + before a call is accepted. + + Change-Id: I9842e1dc2f6e1c2c49dc33fe615255007d2f821e + +2018-03-05 06:50 +0000 [be0e9920b6] Alexander Traud + + * BuildSystem: In NetBSD, the Python Programming Language is python-X.Y. + + ASTERISK-27717 + + Change-Id: If90ddf9c396c32e7402a894f42dce215c30049d1 + +2018-03-16 09:53 +0000 [02fa145a1b] Alexander Traud + + * BuildSystem: Avoid an extra case for OpenBSD. + + Nine years ago with Mantis 13639 (now ASTERISK-12841) an extra case for OpenBSD + was introduced: Vorbis required Ogg to be specified manually, because the shared + library libvorbis.so did not specify its required dependency on -logg itself. + + Today with OpenBSD 6.2, all libvorbis*.so declare their dependencies correctly. + Therefore, an extra case is not required anymore. + + Change-Id: Ifd04e0994ce9f1e4ad29c3948a0398b91d1e97bc + +2018-03-05 10:10 +0000 [00789174f6] Alexander Traud + + * BuildSystem: Enable Advanced Linux Sound Architecture (ALSA) in NetBSD. + + In the script ./configure, AST_EXT_LIB_CHECK checks for external libraries. Some + libraries do not specify all their dependencies and require additional shared + libraries. In AST_EXT_LIB_CHECK, this is the fifth parameter. However, if a + library is specified there, it must exist on the platform, because ./configure + tries to compile/link/execute a small app using those statements. For example, + the library libdl.so is Linux specific and does not exist on BSD-like platforms. + + Furthermore, no supported platform/version was found, which still (ever?) + requires those additional libraries. Therefore, they were simply removed. + + Finally, this change adds the error code ESTRPIPE to the channel driver + chan_alsa for those platforms which lack it, again for example NetBSD. + + ASTERISK-27720 + + Change-Id: I3b21f2135f6cbfac7590ccdc2df753257f426e0b + +2018-03-16 09:02 +0000 [4d1e3fef6b] George Joseph + + * app_voicemail: Fix json blob errors + + When app_voicemail calls ast_test_suite_notify with the results of + a user keypress, it formats the keypress as '%c'. If the user hung up + or some other error occurrs, the result of the keypress is a non + printable character. This ultimately causes json_vpack_ex to think + it's being passed a non utf-8 string and return an error. + + * Keypress results passed to ast_test_suite_notify are now checked with + isprint() and a '?' is substituted if the check fails. + + Change-Id: I78ee188916bbac840f3d03f40201b692347ea865 + +2018-03-15 09:32 +0000 [ebe957c5e9] Corey Farrell + + * main/cdr: Use ast_cli_completion_add for CDR channel completion. + + Change-Id: Ie81830647a23aad61c1162583b6d50adbe6e7822 + +2018-03-12 10:20 +0000 [dbf5ff6ed0] Alexander Traud + + * install_prereq: Add Arch Linux. + + ASTERISK-27738 + + Change-Id: I7ca620e3c4dfb4b064a19382c4915aeb42a2a09f + +2018-03-15 08:19 +0000 [89ba4d4e3d] Corey Farrell + + * main/ccss: Use ast_cli_completion_add for core id. + + Change-Id: I44b25d6d24c7d9bc1bb38a50774b38883162f98f + +2018-03-15 07:29 +0000 [aa0d95c730] Corey Farrell + + * astobj2_container: Use ast_cli_completion_add for container names. + + Change-Id: I4f0fc09e820eb8d8da2354a177dbcf503c56ddd1 + +2017-12-09 04:52 +0000 [b929a7fb8d] Corey Farrell + + * main/channel: Use ast_cli_completion_add for channeltypes. + + Change-Id: Ia845fae6a84801cc7d9996767b99efb2753cbb48 + +2018-03-14 12:38 +0000 [b45bb476bb] Corey Farrell + + * cli: Enable ast_cli_completion_add on public completion generators. + + * ast_cli_complete + * ast_complete_channels + * ast_complete_applications + + These generators will now use ast_cli_completion_add if state == -1. + + Change-Id: I7ff311f0873099be0e43a3dc5415c0cd06d15756 + +2018-03-14 11:17 +0000 [92158b7f37] Ross Beer + + * res_pjsip_rfc3326.c: Account for more than one 'Reason' header + + ASTERISK-27741 + + Change-Id: I0aa59a54735c6d20b95c54db1bd095dbf93e7adf + +2018-03-12 08:05 +0000 [b0fff03bb5] Alexander Traud + + * install_prereq: Add SUSE. + + ASTERISK-27736 + + Change-Id: I4cafc8973349d50a7cb7919ddf0bb1aaef4bfc3e + +2018-02-16 21:11 +0000 [572a508ef2] Corey Farrell + + * loader: Convert reload_classes to built-in modules. + + * acl (named_acl.c) + * cdr + * cel + * ccss + * dnsmgr + * dsp + * enum + * extconfig (config.c) + * features + * http + * indications + * logger + * manager + * plc + * sounds + * udptl + + These modules are now loaded at appropriate time by the module loader. + Unlike loadable modules these use AST_MODULE_LOAD_FAILURE on error so + the module loader will abort startup on failure of these modules. + + Some of these modules are still initialized or shutdown from outside the + module loader. logger.c is initialized very early and shutdown very + late, manager.c is initialized by the module loader but is shutdown by + the Asterisk core (too much uses it without holding references). + + Change-Id: I371a9a45064f20026c492623ea8062d02a1ab97f + +2018-03-13 16:39 +0000 [9e488dd482] Corey Farrell + + * core: Remove incorrect usage of attribute_malloc. + + GCC documentation states that when __attribute__((malloc)) is used it + should not return storage which contains any valid pointers. It + specifically mentions that realloc functions should not have the malloc + attribute, but this also means that complex initializers which could + contain initialized pointers should not use this attribute. + + Change-Id: If507f33ffb3ca3b83b702196eb0e8215d27fc7d2 + +2018-03-12 05:19 +0000 [d9776870e8] Alexander Traud + + * BuildSystem: Enable IMAP storage on openSUSE and Arch Linux. + + ASTERISK-27734 + + Change-Id: I8d6e6a1c08c031649764f5277fbbb85e57c3a9d4 + +2018-02-23 07:41 +0000 [ea9768ff07] Corey Farrell + + * stringfields: Remove MALLOC_DEBUG fields from struct ast_string_field_mgr. + + This causes MALLOC_DEBUG reporting to be slightly different, calls which + cause additional memory pools to be allocated now report the callers + location rather than the location which originally allocated the + string field structure. This reduces storage needed by string fields + and allows MALLOC_DEBUG to identify the source of additional allocations + rather than obscuring it by reporting the original allocation caller. + + Change-Id: Idd18e6639a87ab862079b580c114d90361412289 + +2018-03-10 03:33 +0000 [fee929c8ac] Corey Farrell + + * core: Remove non-critical cleanup from startup aborts. + + When built-in components of Asterisk fail to start they cause the + Asterisk startup to abort. In these cases only the most critical + cleanup should be performed - closing databases and terminating + proceses. These cleanups are registered using ast_register_atexit, all + other cleanups should not be run during startup abort. + + The main reason for this change is that these cleanup procedures are + untestable from the partially initialized states, if they fail it could + prevent us from ever running the critical cleanup with ast_run_atexits. + + Create separate initialization for dns_core.c to be run unconditionally + during startup instead of being initialized by the first dns resolver to + be registered. This ensures that 'sched' is initialized before it can be + potentially used. + + Replace ast_register_atexit with ast_register_cleanup in media_cache.c. + There is no reason for this cleanup to happen unconditionally. + + Change-Id: Iecc2df98008b21509925ff16740bd5fa29527db3 + +2018-03-12 06:40 +0000 [ea3b8bb080] Alexander Traud + + * install_prereq: Update FreeBSD libraries. + + Because the code review system Gerrit creates merge conflicts even when one line + apart another change happened, the previous update to the FreeBSD libraries had + to be rebased via Git. Because of a break for training of the original + contributor, this rebase was done by another contributor and the variant for + Asterisk 13 was cherry-picked to all branches. By this, dependencies for new + features added in newer Asterisk version got lost. This can be seen, when not + the original path set but a previous patch set is compared. + + This change here fixes this by adding those (optional) dependencies for + Asterisk 15 and newer (again). + + ASTERISK-27686 + + Change-Id: I6638a3d0dc37ad4ff5f94be15463e3dd8a2bfe74 + +2018-03-12 04:11 +0000 [9164be19d2] Alexander Traud + + * res_srtp: Add support for libsrtp2.x on openSUSE. + + Since ASTERISK-27253, no symbols from the header srtp2/crypto_types.h are used + anymore. Therefore, its include statement can be removed. This allows to compile + Asterisk on platforms which do not offer this private header, like openSUSE. + + ASTERISK-27733 + + Change-Id: I25c5cb8fa966043d1506ebef449e5a724412b4b6 + +2018-03-08 09:14 +0000 [5b525c9781] Alexander Traud + + * BuildSystem: Add NetBSD. + + Headers, libraries, and rpath. + + ASTERISK-27728 + ASTERISK-11015 + Reported by: Curt Sampson + + Change-Id: I50aa5fcd095937df32a2e33307caac7e79a8b5b7 + +2018-03-09 03:13 +0000 [c5f2332953] Alexander Traud + + * BuildSystem: For consistency, avoid double-checking via if clauses. + + In the script ./configure, AST_EXT_LIB_CHECK and AST_PKG_CONFIG_CHECK first test + whether parameter 1 was already found. Consequently, an if-test on PBX_ just a + line below is redundant, if exactly the same parameter 1 is used again. + + No performance gain is expected by this change. However, because this strategy + is used all over in ./configure except for two places, this change aims to + create more consistency: Only do something different if there is a reason to do + so. + + Change-Id: I4a6f48127b7af3a48168c917e888be1f70625027 + +2018-03-09 02:44 +0000 [36c8885c66] Alexander Traud + + * BuildSystem: Enable dladdr on non-Linux platforms like FreeBSD. + + ASTERISK-27641 + + Change-Id: I587e8ba0123c70fc10cfd8b0ac3299551f61d84b + +2018-03-08 13:53 +0000 [e6738b79b3] Richard Mudgett + + * Complete deprecating legacy modules. + + The menuselect comment was updated to deprecate these modules but the + AST_MODULE_INFO block at the end of file was missed. + + ASTERISK-27671 + + Change-Id: I63070b5c4d4f08af010c6034acd4793c1bcef839 + +2018-03-07 13:50 +0000 [7f4354c10f] Richard Mudgett + + * res_pjproject.c: Upgrade bundled PJPROJECT to 2.7.2 + + Update patches included in bundled PJPROJECT for the new version. + + ASTERISK-27730 + + Change-Id: Id3c8c8ad82126846bcd9768bc3d0a18d89be8944 + +2018-03-08 12:02 +0000 [9ff95e46e3] Alexander Traud + + * install_prereq: Add NetBSD. + + ASTERISK-27729 + + Change-Id: I7a706d51375d54cf5e36d32397bfe09a48670804 + +2018-03-08 09:04 +0000 [75cebc3e71] Alexander Traud + + * BuildSystem: Re-check for another UUID library only when previous check failed. + + As a side-effect, this avoids the ambiguous output: + checking for uuid_generate_random... no + which was printed always previously. + + ASTERISK-25586 + Reported by: John Nemeth + + Change-Id: I6d541dfcf453932a9856c5e251aa22e0e6c233c9 + +2018-03-08 05:28 +0000 [fc64a0e2b3] Alexander Traud + + * BuildSystem: Instead of $PJPROJECT_LIBS with s, use $PJPROJECT_LIB everywhere. + + In the script ./configure, + xyz_LIB is set by AST_PKG_CONFIG_CHECK and + xyz_LIBS is set by PKG_CHECK_MODULES within + AST_PKG_CONFIG_CHECK. Both are the same. In Asterisk normally the former and + only three times the latter was used. Let us use xyz_LIB without s, for + consistency with AST_EXT_LIB_CHECK. That eases understanding because now readers + do not have to know that xyz_LIB equals xyz_LIBS. + + Change-Id: I7359860a5d730cdc784c2c48e501a082196434d3 + +2018-03-06 06:28 +0000 [16f6e94033] Alexander Traud + + * BuildSystem: Enable PortAudio in NetBSD. + + In NetBSD, PortAudio 1 is still the default version. PortAudio 2 can be + installed side by side but gets placed in a 'portaudio2' subdirectory. To + find PortAudio 2 even in a subdirectory, the tool pkg-config is queried via + AST_PKG_CONFIG_CHECK. For those platforms, which do not list PowerAudio 2 + via pkg-config, the previous check remains and is executed thereafter. + + ASTERISK-27721 + + Change-Id: I4175500126909ad1b181fff8e11bb4a3a6ae4fa9 + +2018-03-07 14:36 +0000 [c8a521b6c8] Corey Farrell + + * Replace direct checks of option_debug with DEBUG_ATLEAST macro. + + Checking option_debug directly is incorrect as it ignores file/module + specific debug settings. This system-wide change replaces nearly all + direct checks for option_debug with the DEBUG_ATLEAST macro. + + Change-Id: Ic342d4799a945dbc40ac085ac142681094a4ebf0 + +2018-03-07 13:13 +0000 [1fe913f7bd] Richard Mudgett + + * BuildSystem regression: Fix errors reported by clean targets. + + Doing a 'make clean', 'make distclean', or 'make dist-clean' gets errors + about an invalid shell option: "/bin/sh: 0: Illegal option -". + + The clean targets do not include the makeopts file which defines GREP and + LDCONFIG because the file may not exist and the distclean/dist-clean + targets will delete it anyway. + + ASTERISK-27715 + + Change-Id: I33d40acdb03862bc89aeb6fb1ff497894a8ea7f5 + +2018-03-06 13:31 +0000 [88cef40f6e] Ross Beer + + * res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints + + ASTERISK-27554 + + Change-Id: If61c7faab7d2fa1031c056ed6268fe928e2391cf + +2018-03-06 08:14 +0000 [961dd9fe52] Sungtae Kim + + * voicemail: Fixed wrong voicemail message count + + Fixed wrong voicemail mailbox reference for Action: VoicemailUsersList. + + ASTERISK-27703 + + Change-Id: Ie6578ad80bba2bfaf34b84f0be978f59045ce6cd + +2018-03-07 09:32 +0000 [58f44f225a] Alexander Traud + + * utils: In Solaris, avoid a warning about an unused variable. + + When HAVE_GETHOSTBYNAME_R_5 was set by the script ./configure, GCC 7.3.0 found + an unused variable. Actually, the variable was used (set to a dummy value) but + the compiler optimization might have removed that. Instead, this change ensures + that the variable 'res' is only used when it is really required. + + Change-Id: Ic3ea23ccf84ac4bc2d501b514985b989030abab5 + +2018-03-07 01:45 +0000 [add03e207c] Corey Farrell + + * app_osplookup: Move header defines into the app. + + astosp.h is leftover from when logic was split between app_osplookup and + res_osp. All logic was moved into app_osplookup by 109737eb1c in 2006, + but astosp.h remained. This moves the remaining defines into + app_osplookup and deletes astosp.h. + + Change-Id: I0a6c4debd7c9543b608520b1765abfa4fab7b2fd + +2018-02-14 07:33 +0000 [75a35ee5e8] Jean Aunis + + * chan_sip: Fix improper RTP framing on outgoing calls + + The "ptime" SDP parameter received in a SIP response was not honoured. + Moreover, in the abscence of this "ptime" parameter, locally configured + framing was lost during response processing. + + This patch systematically stores the framing information in the + ast_rtp_codecs structure, taking it from the response or from the + configuration as appropriate. + + ASTERISK-27674 + + Change-Id: I828a6a98d27a45a8afd07236a2bd0aa3cbd3fb2c + +2018-02-20 11:48 +0000 [3fb26df4ac] lvl + + * res_pjsip_session: properly handle SDP from a forked call with early media + + In handle_negotiated_sdp(), use session->active_media_state when + session->pending_media_state is empty. The 200's SDP should be fed into + handle_negotiated_sdp_session_media() together with the already negotiated + state, which is now in session->active_media_state instead. Only if both + the session's pending and active media are empty should + handle_negotiated_sdp() abort. + + ASTERISK-27441 + + Change-Id: If0d5150ffe6f38d8a854831fef37942258d4629c + +2018-03-05 08:01 +0000 [ef79e583ec] Alexander Traud + + * BuildSystem: Enable Lua in NetBSD. + + luaL_openlib got removed with Lua 5.2. + luaL_newstate is available in all versions. + + ASTERISK-27718 + + Change-Id: I9c8c8880315ee36ab740d7c40153306c0bfd6f71 + +2018-03-06 07:33 +0000 [162fc4fba6] Alexander Traud + + * BuildSystem: Depend not implicitly but explicitly on external libraries. + + ASTERISK-27722 + + Change-Id: Ie7b8c30d86cb00a54d6ac4e09e6f28f42d2bd52c + +2018-03-05 08:15 +0000 [99b6a14737] Alexander Traud + + * res_http_post: Enable GMime in NetBSD. + + ASTERISK-27719 + + Change-Id: I230c5f9f316b2e9465c093c13580f72ebbaf67a7 + +2018-03-05 04:16 +0000 [7e9734a858] Alexander Traud + + * BuildSystem: Enable autotools in NetBSD. + + ASTERISK-27716 + + Change-Id: I52525e35e1620341272219911d054a1e3d3ec01e + +2018-03-05 03:42 +0000 [b97905aaf2] Alexander Traud + + * BuildSystem: AC_PATH_PROG sets to colon character when not found. + + ASTERISK-27715 + Reported by: Corey Farrell + + Change-Id: I0d6d9572d1352dc7ad30c9917173f1e980d8c938 + +2018-03-03 09:06 +0000 [aabbb49e33] Alexander Traud + + * chan_unistim: NetBSD has an incompatible struct in_pktinfo. + + ASTERISK-27714 + Reported by: John Nemeth + + Change-Id: I1b84a89315a5f61222123d21bf35c59224da8990 + +2018-03-03 08:30 +0000 [5d19762b5f] Alexander Traud + + * BuildSystem: Cast any intptr_t explicitly to its proposed type. + + ASTERISK-27713 + + Change-Id: I90c769e3c7f8c26de8a3af11335862cec15a1b22 + +2018-03-03 06:56 +0000 [9749524520] Alexander Traud + + * BuildSystem: Detect whether uselocale(.) is available. + + ASTERISK-27712 + Reported by: Joerg Sonnenberger, D'Arcy Cain + + Change-Id: Idf1c9d43617a3e13028b95b313415903d80ef807 + +2018-03-03 03:53 +0000 [f7b845ff41] Alexander Traud + + * BuildSystem: Avoid re-defining of pthread_* on NetBSD. + + ASTERISK-27711 + + Change-Id: Idc9194035b2958b99f6b01eb5b438d45a074565b + +2018-03-02 07:05 +0000 [313a9fe255] Alexander Traud + + * BuildSystem: Install init scripts on openSUSE Tumbleweed. + + ASTERISK-27710 + + Change-Id: I4c777e41b31d4415bbe21cb435ad47b43ebb5467 + +2018-03-02 05:12 +0000 [a9c02e484a] Alexander Traud + + * BuildSystem: Avoid == for comparison in ./configure. + + ASTERISK-27709 + Reported by: John Nemeth + + Change-Id: I11b1ae8fd404c04066f1458f5d71f9536359d58d + +2018-02-19 19:55 +0000 [c711e4076a] Richard Mudgett + + * core: Remove ABI effects of MALLOC_DEBUG. + + This allows asterisk to be compiled with MALLOC_DEBUG to load modules + built without MALLOC_DEBUG. Now pre-compiled third-party modules will + still work regardless of MALLOC_DEBUG being enabled or not. + + Change-Id: Ic07ad80b2c2df894db984cf27b16a69383ce0e10 + +2018-02-27 15:40 +0000 [1a36a452bd] Richard Mudgett + + * pjproject: Add cache_pools debugging option. + + The pool cache gets in the way of finding use after free errors of memory + pool contents. Tools like valgrind and MALLOC_DEBUG don't know when a + pool is released because it gets put into the cache instead of being + freed. + + * Added the "cache_pools" option to pjproject.conf. Disabling the option + helps track down pool content mismanagement when using valgrind or + MALLOC_DEBUG. The cache gets in the way of determining if the pool + contents are used after free and who freed it. + + To disable the pool caching simply disable the cache_pools option in + pjproject.conf and restart Asterisk. + + Sample pjproject.conf setting: + [startup] + cache_pools=no + + * Made current users of the caching pool factory initialization and + destruction calls call common routines to create and destroy cached pools. + + ASTERISK-27704 + + Change-Id: I64d5befbaeed2532f93aa027a51eb52347d2b828 + +2018-01-31 11:48 +0000 [eacee03f0e] Corey Farrell + + * gitreview: Reorder and add padding. + + Change-Id: I459dc320a8c9452a01eed6f403d786741587c890 + +2018-02-23 21:24 +0000 [7b01236028] Michael Cargile + + * apps/app_amd.c: Fixed total time and silence calculations + + Between Asterisk 11 and Asterisk 13 there was a significant increase + in the number of AST_FRAME_NULL frames being processed by app_amd.c's + main loop. Each AST_FRAME_NULL frame was being counted as 100ms + towards the total time and silence. This may have been accurate + when app_amd.c was orginally added, but it is not in Asterisk 13. + As such the total analysis time and silence calculations were way + off effectively breaking app_amd.c + + * Additional debug messages were added + * AST_FRAME_NULL are now ignored + + ASTERISK-27610 + + Change-Id: I18aca01af98f87c1e168e6ae0d85c136d1df5ea9 + +2018-02-23 14:58 +0000 [7e2128c8e6] George Joseph + + * ast_coredumper: Minor fixes + + * Fix --tarball-config so the option doesn't cause an error. + + * Allow for missing /etc/os-release. + + * Add a sleep between tarballing the coredump and removing the + output directory to allow the filesystem to settle. + + Change-Id: I73e03b13087978bcc7f6bc9f45753990f82d9d77 + +2018-02-22 14:27 +0000 [0be1c388e4] Ben Ford + + * Add extended properties to rtp_engine for RTP retransmission support. + + A couple of additional properties are needed in rtp_engine to enable + support for packet retransmission: AST_RTP_PROPERTY_RETRANS_RECV and + AST_RTP_PROPERTY_RETRANS_SEND. These will both be enabled automatically + if an endpoint has the webrtc option enabled. While this adds no + functionality currently, it will serve as a building block for future + changes for RTP retransmission support. + + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + + Change-Id: Ic598acd042a045f9d10e5bdccb66f4efc9e587cc + +2018-02-23 10:09 +0000 [a7927471ad] Corey Farrell + + * core: Fix handling of maximum length lines in config files. + + When a line is the maximum length "\n" is found at sizeof(buf) - 2 since + the last character is actually the null terminator. In addition if a + line was exactly 8190 plus a multiple of 8192 characters long the config + parser would skip the following line. + + Additionally fix comment in voicemail.conf sample config. It previously + stated that emailbody can only contain up to 512 characters which is + always wrong. The buffer is normally 8192 characters unless LOW_MEMORY + is enabled then it is 512 characters. The updated comment states that + the line can be up to 8190 or 510 characters since the line feed and + NULL terminator each use a character. + + ASTERISK-26688 #close + + Change-Id: I80864a0d40d2e2d8cd79d72af52a8f0a3a99c015 + +2018-02-22 13:53 +0000 [bb9c1938a0] Richard Mudgett + + * res_pjsip_refer.c: Fix attended transfer race condition crash. + + The transferrer's session channel was destroyed by the transferrer's + serializer thread in a race condition with the transfer target's + serializer thread during an attended transfer. The transfer target's + serializer was attempting to clean up a deferred end status on behalf of + the transferrer's channel when it should have passed the action to the + transferrer's serializer. When the transfer target's serializer lost the + race then both threads wind up trying to end the transferrer's session. + + * Push the ast_sip_session_end_if_deferred() call onto the transferrer's + serializer to avoid a race condition that results in a crash. The + session_end() function that could be called by + ast_sip_session_end_if_deferred() really must be executed by the + transferrer's serializer to avoid this kind of crash. + + ASTERISK-27568 + + Change-Id: Iacda724e7cb24d7520e49b2fd7e504aa398d7238 + +2018-02-17 03:28 +0000 [c4c5d00528] Alexander Traud + + * install_prereq: Update FreeBSD libraries. + + deleted + autoconf gcc libsamplerate sqlite + + changed + binutils to libbfd + freetds-devel to freetds + gmime2 to gmime26 + mysql55-client to mysql57-client + + added + alsa-lib bison bzip2 cclient corosync doxygen libedit flex graphviz + libhoard libical libilbc libltdl lua neon newt net-snmp + openldap-client openssl patch pkgconf portaudio postgresql10-client + python radcli speexdsp subversion uriparser xmlstarlet libzip + + ASTERISK-27686 + + Change-Id: Ibe88c9b26e59c30d26cdb313a3ef01c9f37ac80d + +2018-02-22 10:54 +0000 [50d9af101e] Sean Bright + + * func_audiohookinherit: Remove deprecated module. + + Change-Id: Id52f719078a65c4b2eee7ab99d761eba6b6aed94 + +2018-02-21 12:52 +0000 [f083edc43c] Richard Mudgett + + * manager.c: Fix lseek() parameter order. + + ASTERISK-27659 + + Change-Id: I04a2705d2cb7df250769967bc59e2b397a49b797 + +2018-02-20 13:11 +0000 [39f733406d] Richard Mudgett + + * bridge_simple.c: Fix stream topology handling. + + The handling of stream topologies was not protected by channel locks in + simple_bridge_request_stream_topology_change(). + + * Fixed topology handling to be protected by channel locks where needed in + simple_bridge_request_stream_topology_change(). + + ASTERISK-27692 + + Change-Id: Ica5d78a6c7ecf4f0b95fb16de28d3889b32c4776 + +2018-02-05 16:46 +0000 [6436137959] Sean Bright + + * AST-2018-006: Properly handle WebSocket frames with 0 length payload. + + In ast_websocket_read() we were not adequately checking that the + payload_len was non-zero before passing it to ws_safe_read(). Calling + ws_safe_read with a len argument of 0 will result in a busy loop until + the underlying socket is closed. + + ASTERISK-27658 #close + + Change-Id: I9d59f83bc563f711df1a6197c57de473f6b0663a + +2018-01-31 13:37 +0000 [880c69f00f] Kevin Harwell + + * AST-2018-003: Crash with an invalid SDP fmtp attribute + + pjproject's fmtp retrieval function failed to catch invalid fmtp attributes. + Because of this Asterisk would crash if given an SDP with an invalid fmtp + attribute. + + When retrieving the format this patch now makes sure the fmtp attribute is + available. If not available it now returns an error status. + + ASTERISK-27583 #close + + Change-Id: I5cebe000ce2d846cae3af33b6d72c416e51caf2f + +2018-01-31 13:33 +0000 [d3a398cf90] Kevin Harwell + + * AST-2018-002: Crash with an invalid SDP media format description + + pjproject's media format parsing algorithm failed to catch invalid values. + Because of this Asterisk would crash if given an SDP with a invalid media + format description. + + When parsing the media format description this patch now properly parses the + value and returns an error status if it can't successfully parse/convert the + value. + + ASTERISK-27582 #close + + Change-Id: I883b3a4ef85b6972397f7b56bf46c5779c55fdd6 + +2018-02-06 12:07 +0000 [758409de56] George Joseph + + * AST-2018-005: res_pjsip_transport_management: Move to core + + Since res_pjsip_transport_management provides several attack + mitigation features, its functionality moved to res_pjsip and + this module has been removed. This way the features will always + be available if res_pjsip is loaded. + + ASTERISK-27618 + Reported By: Sandro Gauci + + Change-Id: I21a2d33d9dda001452ea040d350d7a075f9acf0d + +2018-02-06 11:28 +0000 [de871515ba] George Joseph + + * AST-2018-005: Fix tdata leaks when calling pjsip_endpt_send_response(2) + + pjsip_distributor: + authenticate() creates a tdata and uses it to send a challenge or + failure response. When pjsip_endpt_send_response2() succeeds, it + automatically decrements the tdata ref count but when it fails, it + doesn't. Since we weren't checking for a return status, we weren't + decrementing the count ourselves on error and were therefore leaking + tdatas. + + res_pjsip_session: + session_reinvite_on_rx_request wasn't decrementing the ref count + if an error happened while sending a 491 response. + pre_session_setup wasn't decrementing the ref count if + while sending an error after a pjsip_inv_verify_request failure. + + res_pjsip: + ast_sip_send_response wasn't decrementing the ref count on error. + + ASTERISK-27618 + Reported By: Sandro Gauci + + Change-Id: Iab33a6c7b6fba96148ed465b690ba8534ac961bf + +2018-02-06 11:21 +0000 [c53d8dcb68] George Joseph + + * AST-2018-005: Add a check for NULL tdata in ast_sip_failover_request + + It was discovered that there are some corner cases where a pjsip tsx + might have no last_tx so calling ast_sip_failover_request with + a NULL last_tx as its tdata would cause a crash. + + ASTERISK-27618 + Reported By: Sandro Gauci + + Change-Id: Ic2b63f6d4ae617c4c19dcdec2a7a6156b54fd15b + +2018-02-07 08:09 +0000 [d424850d58] Joshua Colp + + * AST-2018-004: Restrict the number of Accept headers in a SUBSCRIBE. + + When receiving a SUBSCRIBE request the Accept headers from it are + stored locally. This operation has a fixed limit of 32 Accept headers + but this limit was not enforced. As a result it was possible for + memory outside of the allocated space to get written to resulting + in a crash. + + This change enforces the limit so only 32 Accept headers are + processed. + + ASTERISK-27640 + Reported By: Sandro Gauci + + Change-Id: I99a814b10b554b13a6021ccf41111e5bc95e7301 + +2018-01-13 08:04 +0000 [e70c4ec84d] Joshua Colp + + * AST-2018-001: rtp / channel: Don't allow an unnegotiated format to be passed up. + + When an RTP packet is received by an RTP engine it has to map the + payload into the Asterisk format. The code was incorrectly checking + our own static list for ALL payloads if it couldn't find a negotiated one. + This included dynamic payloads. If the payload mapped to a format + of a different type (for example receiving a video packet on an audio + RTP instance) then the core stream code could cause a crash if a legacy + channel driver was in use as no stream would be present. + + To provide further protection the core stream code will no longer assume + that a video or audio frame will always have a stream for legacy channel + drivers. If no stream is present the frame is dropped. + + ASTERISK-27488 + + Change-Id: I022556f524ad8379ee73f14037040af17ea3316a + +2018-02-20 13:11 +0000 [e2f98fbd63] Richard Mudgett + + * channel.c: Fix typo. + + Change-Id: I4eeedf89085697e81c354eb92d546686c67b0b5b + +2018-02-20 10:33 +0000 [259c80675e] Joshua Colp + + * chan_sip: Emit a second ringing event to ensure channel is found. + + When constructing a dialog-info+xml NOTIFY message a ringing channel + is found if the state is ringing and further information is placed into + the message. Due to the migration to the Stasis message bus this did + not always work as expected. + + This change raises a second ringing event in such a way to guarantee + that the event is received by chan_sip and another lookup is done to + find the ringing channel. + + ASTERISK-24488 + + Change-Id: I547a458fc59721c918cb48be060cbfc3c88bcf9c + +2018-02-20 04:31 +0000 [0ad13949c1] Corey Farrell + + * doc/lang/language-criteria.txt: Link to wiki. + + This document is out of date and is superseded by content on the + Asterisk wiki. + + ASTERISK-24386 #close + + Change-Id: Idbf95b27b096c205251e1bbb560c79224ba81822 + +2018-02-19 04:21 +0000 [4b555d7147] Thomas Guebels + + * res_rtp_asterisk: Fix ICE candidate nomination + + If the ICE role is not set right away, we might have a role conflict + that stays undetected and ICE finishing with successful tests and no + candidate nominated. This was introduced by ASTERISK-27088. + + To avoid this, we set the role as soon as before but only if the ICE + state permits it: still checking and not yet nominating candidates or + completed. + + ASTERISK-27646 + + Change-Id: I5dbc69ad63cacbb067922850fbb113d479bd729c + +2018-02-18 10:27 +0000 [8b18247af6] Sean Bright + + * res_http_websocket: Don't leak memory on read failure + + Change-Id: Ic449ea832bc81a1671c0e910c5fbe8c683e3da89 + +2018-02-19 03:57 +0000 [97c21e9cb3] Corey Farrell + + * core: Rename sounds_index.c to sounds.c. + + This will make the source filename match the 'module reload sounds' + command. This will allow conversion to a built-in module in Asterisk 16 + without needing to redefine AST_MODULE. + + Change-Id: Ifb8e489575b27eb33d8c0b6a531f266670557f6e + +2018-02-19 02:49 +0000 [e03f0f9572] Corey Farrell + + * config: Fix locking for extconfig reload. + + Expand locking to include full reload process for extconfig to ensure + nothing can read the config mappings between clearing and reloading. + + Change-Id: I378316bad04f1b599ea82d0fef62b8978a644b92 + +2018-02-15 14:09 +0000 [e4a5c9ccf4] Sean Bright + + * res_pjsip_header_funcs: Various cleanups + + * Prefer strcasecmp() over stricmp() + * Use a list with no lock since we never actually lock + * Minor cleanups to error messages + + Change-Id: I8446f44795ee8f3072e1c1f9193c6912dfc0c42b + +2018-02-17 08:49 +0000 [a70c92121d] Alexander Traud + + * rtp_engine: Load format name / mime type in uppercase again. + + This reverts a previous change partly. + + ASTERISK-27689 + + Change-Id: Ia3d2f282db6995be8c1c253b5d52f6038761e8af + +2018-02-16 17:58 +0000 [525c0251c0] Corey Farrell + + * BuildSystem: Use single bootstrap.sh for Asterisk and menuselect. + + This causes the root bootstrap.sh script to generate configure scripts + for both Asterisk and menuselect. This ensures that both configure + scripts are generated with the same version of autotools and avoids + situations where shared autoconf macros get modified without + regenerating the menuselect script. + + Change-Id: I2bfd8537bbb63b3d46b11efabbb15eaaf9ef731a + +2018-02-16 13:33 +0000 [65a4084060] Sean Bright + + * res_pjsip: Endpoint destruction does not free DTLS configuration + + ASTERISK-27679 #close + Reported by: Mak Dee + + Change-Id: I89a2783a11be0763bf123d1619ed176b6225cf42 + +2018-02-16 12:42 +0000 [a7e7302ab6] Alexander Traud + + * install_prereq: Update OpenBSD libraries. + + deleted + jack sqlite + + renamed + freetds-0.63p1-msdblib to freetds + mysql-client to mariadb-client + + added + bison bzip2 c-client doxygen e2fsprogs graphviz gsm libical jansson libltdl + lua neon net-snmp libsrtp portaudio-svn postgresql-client python speexdsp + subversion uriparser xmlstarlet + fftw3 libsndfile + + ASTERISK-27684 + + Change-Id: I26bdcb0a1d0e484a8dad1052da97f194aefd3370 + +2018-02-16 12:30 +0000 [14796f529e] Alexander Traud + + * BuildSystem: Allow newer autotools on OpenBSD. + + ASTERISK-27683 + + Change-Id: I5ec9dafbb0c16b6f2740c641980bc2eaaf995624 + +2017-10-16 07:36 +0000 [976afd26ab] Torrey Searle + + * contrib/script/sip_to_pjsip: add support for realtime + + Add a new script that can read from legacy realtime peers & generate + an sql file for populating pjsip endpoints, identify, and aor records. + + ASTERISK-27348 #close + + Change-Id: Idd3d7968a3c9c3ee7936d21acbdaf001b429bf65 + +2018-02-16 07:52 +0000 [dda73c5018] Alexander Traud + + * BuildSystem: Fix a typo related to ./configure --prefix= on OpenBSD. + + Reported by: Stuart Henderson + + Change-Id: Ieae8624f48b6ae78cf29930b9a45a3c842c7a764 + +2018-02-16 05:58 +0000 [5fd59014a5] Alexander Traud + + * res_calendar: Specialized calendars depend on symbols of general calendar. + + ASTERISK-27680 + + Change-Id: Ifb77912e424fe3710a025c18526fada673ec0b79 + +2018-02-16 06:41 +0000 [c674efa996] Alexander Traud + + * BuildSystem: Enable IMAP storage on OpenBSD. + + ASTERISK-27681 + Reported by: Stuart Henderson + + Change-Id: Ifb6b614acb251b695b9417d76510e73eb335b679 + +2018-02-16 04:50 +0000 [2c814afb86] Alexander Traud + + * BuildSystem: Enable system provided libedit on OpenBSD. + + ASTERISK-27677 + + Change-Id: I0854e3616d1361ae9b6907d3d3444a02784ac62b + +2018-02-15 14:30 +0000 [af2dd3a678] Sean Bright + + * bridge_roles: Use a non-locking linked list where appropriate + + Also explicitly initialize with the AST_LIST_HEAD_NOLOCK_INIT macro for + clarity. + + Change-Id: I4bc39ec33bc3ff77e1a971a01ace87deb965be3f + +2018-02-15 13:29 +0000 [303e43f8a6] Sean Bright + + * res_pjsip: Use pjsip_sip_uri.user_param instead of other_param + + There is a dedicated slot in the pjsip_sip_uri for the 'user' + parameter, so use that instead of adding to the list of generic URI + parameters. + + Change-Id: I0a0ce8a60ecee27489735bf56fd707719d8c2ed6 + +2018-02-12 07:37 +0000 [8ac198aff3] Alexander Traud + + * BuildSystem: Remove chan_h323 leftovers. + + ASTERISK-27670 + + Change-Id: I07a8ef8bbd6001e25711fa1bff152eb6c9efa729 + +2018-01-17 08:17 +0000 [6b6b3ffa5b] Alexander Traud + + * BuildSystem: Invoke ldconfig with previous path. + + On OpenBSD, gmake uninstall{-all} registered only libraries from /usr/lib and + lost those from /usr/local/lib. Instead, invoke ldconfig on a path. + + ASTERISK-27595 + + Change-Id: I4aa2c0b5e07119d1a556f8ff6349eaf09e986888 + +2017-12-22 15:27 +0000 [9f74afbdcf] Corey Farrell + + * Deprecate legacy modules. + + * app_fax (replaced by res_fax). + * res_config_sqlite (replaced by res_config_sqlite3). + * res_monitor (replaced by app_mixmonitor). + + This is related to ASTERISK~23657 but does not resolve that ticket. + Resolving that ticket would require complete removal of res_monitor. + + ASTERISK-27671 #close + + Change-Id: I16a3edd61fc1abd4a7b2e9357693ed663f62dd49 + +2018-01-28 03:02 +0000 [f9ba31bb21] Alexander Traud + + * BuildSystem: Do not warn when bash is not installed. + + ASTERISK-27631 + + Change-Id: Iefdf268b0b98c3e7d8089ba87cf78136ac1d785b + +2018-02-12 22:15 +0000 [9e45d3f893] Corey Farrell + + * main/asterisk.c: Remove silly usage of RAII_VAR. + + Change-Id: I7e2996397fbd3c3a6a69dd805c38448ddfc34ae9 + +2017-12-25 19:32 +0000 [02ee296f81] Corey Farrell + + * optional_api: Refactor to use vector's and standard allocators. + + * Replace ad-hoc array management with macro's from vector.h. + * Remove redundent logger messages. + * Use normal Asterisk allocators instead of directly using libc + allocators. + * Free memory when an API has no implementation or users. + + Change-Id: Ic6ecb31798d4a78e7df39ece86a68b60eac05bf5 + +2018-02-11 15:27 +0000 [8372138cce] Richard Mudgett + + * chan_sip.c: Fix crash processing CANCEL. + + Check if initreq data string exists before using it when processing a + CANCEL request. + + ASTERISK-27666 + + Change-Id: Id1d0f0fa4ec94e81b332b2973d93e5a14bb4cc97 + +2018-02-06 14:27 +0000 [cb4cfb8c43] Sungtae Kim + + * manager: Add AMI event Load/Unload + + Add an AMI events Load and Unload for notify when the + module has been loaded and unloaded. + + ASTERISK-27661 + + Change-Id: Ib916c41eddd63651952998f2f49c57c42ef87a64 + +2018-01-30 20:31 +0000 [04490fb1d8] Corey Farrell + + * json: Add conditionals to avoid locking if Jansson is thread safe. + + Jansson is thread safe for all read-only functions and reference + counting starting v2.11. This allows simplification of our code and + removal of locking around reference counting and dumping. + + Change-Id: Id985cb3ffa6681f9ac765642e20fcd187bd4aeee + +2018-02-12 06:16 +0000 [b21915bd1c] Alexander Traud + + * pjproject_bundled: Disable G.729 from Belledonne Communications. + + When is installed, PJProject + tries to link that. Support for this bcg729 was added with PJProject 2.7. The + issue happens, because Teluu enabled that new feature on default. + + ASTERISK-27584 + Reported by: Stuart Henderson + + Change-Id: I88b6b18ad777bcfe2d8201187b4b90eec0a172a6 + +2018-02-12 05:38 +0000 [97f45d5816] Alexander Traud + + * codecs: Add support for WebRTC iLBC 2.0. + + When the latest version of that library was installed, Asterisk did not build. + + ASTERISK-27669 + Reported by: Николай Михо + + Change-Id: I27e09bb875fdd56423bd9fae1be85fddb428eb96 + +2018-02-12 01:26 +0000 [9fddc8b4dc] Corey Farrell + + * core: Remove embedded editline. + + This removes the embedded copy of editline from the Asterisk source + tree, making a system copy of libedit mandatory in Asterisk 16+. + + ASTERISK-27634 #close + + Change-Id: Iedb64ad92acb78419f3caefedaa2bb7cd2a1a33f + +2018-01-30 09:58 +0000 [32e610d9e6] Alexander Traud + + * backtrace: Avoid potential spurious output. + + clang 4.0 found this via -Wlogical-not-parentheses. + + ASTERISK-27642 + + Change-Id: I9ec3e144d425a976c02811bd23cd0c533d2eca4e + +2018-02-10 05:39 +0000 [971378bbdb] Alexander Traud + + * install_prereq: Update Debian/Ubuntu libraries. + + ASTERISK-27555 + + Change-Id: Idc36e91db30c0163c560d04c5a82bca5d6ce92a8 + +2018-02-09 12:06 +0000 [b2fcb30d38] Richard Mudgett + + * cdr.c: Fix runtime leak of CDR records. + + Need to remove all CDR's listed by a CDR object from the active_cdrs_all + container including the root/master record. + + ASTERISK-27656 + + Change-Id: I48b4970663fea98baa262593d2204ef304aaf80e + +2018-01-31 17:48 +0000 [67cd90f10d] Richard Mudgett + + * app_confbridge: ConfbridgeList event has standard channel shapshot headers. + + * Made the AMI ConfbridgeList action's ConfbridgeList events output all + the standard channel snapshot headers instead of a few hand-coded channel + snapshot headers. The benefit is that the CallerIDName gets disruptive + characters like CR, LF, Tab, and a few others escaped. However, an empty + CallerIDName is now output as "" instead of "". + + ASTERISK-27651 + + Change-Id: Iaf7d54a9d40194c2db060bc9b4979fab6720d977 + +2018-01-31 15:45 +0000 [f4b161440b] Richard Mudgett + + * app_confbridge: Add the Muted header to ConfbridgeJoin AMI event. + + ASTERISK-27651 + + Change-Id: Idef2ca54d242d1b894efd3fc7b360bc6fd5bdc34 + +2017-12-19 02:52 +0000 [5b8fea93d1] Oron Peled + + * chan_console: don't read and write at the same time + + It seems that the ALSA backend of PortAudio doesn't know how to both + read and write at the same time by adding a per-device mutex. + + FIXME: currently only a draft version. Need to either auto-detect + we work with the ALSA backend or add an extra configuration option + to use this mutex. + + ASTERISK-27426 #close + + Change-Id: I635eacee45f5413faa18f5a3b606af03b926dacb + +2018-02-02 17:35 +0000 [1017db107c] Richard Mudgett + + * endpoint identifiers: Some code cleanup. + + res_pjsip_endpoint_identifier_user.c: + * Fix copy/paste error in find_endpoint(). We were using a constant + "anonymous" string instead of the passed in endpoint_name when checking + the transport domain for an endpoint match. + * Eliminate RAII_VAR in find_endpoint(). + * Remove always true check in find_transport_state_in_use(). + * Remove useless CMD_STOP in find_transport_state_in_use(). + + res_pjsip_endpoint_identifier_anonymous.c: + * Eliminate RAII_VAR in anonymous_identify(). + * Remove always true check in find_transport_state_in_use(). + * Remove useless CMD_STOP in find_transport_state_in_use(). + + Change-Id: I86924c31db5bd225ca0c1219c761b668c6f91189 + +2018-02-02 17:20 +0000 [b71e469d68] Richard Mudgett + + * res_pjsip/config_domain_aliases.c: Add check for missing domain. + + What is the point of defining an alias and not saying what is being + aliased? + + Change-Id: I98a892016ed61dcf5efeb6619fd748925103f0be + +2018-02-02 15:11 +0000 [0960de71ae] Richard Mudgett + + * res_pjsip.c: Fix documentation typos. + + Change-Id: I82ae0b92bfa2ece84a5c684efd9eefdc83ebd068 + +2018-02-02 15:43 +0000 [bef49d90c1] Richard Mudgett + + * res_sorcery_realtime.c: Fix ref leak if object failed to apply. + + Change-Id: I3c7106ff77009754725cee790eadf5da44154ab6 + +2018-01-24 19:58 +0000 [7e32adf044] Sungtae Kim + + * manager.c: Fixed "(null):" header in AMI AsyncAGIEnd event + + * Changed to create ami_event string only when the given blob is not + json_null(). + * Fixed bad expression. + + ASTERISK-27621 + + Change-Id: Ice58c16361f9d9e8648261c9ed5d6c8245fb0d8f + +2018-02-01 13:01 +0000 [73f92c2c52] Joshua Elson + + * res_pjsip_mwi.c: Fix null pointer crash + + ASTERISK-27652 #close + + Change-Id: I78a0d38bfd8d0d82830f3d53da04872d6b67284d + +2018-02-01 15:03 +0000 [fc98843d4b] Sean Bright + + * appdocsxml.xslt: Add Language to channel snapshot transformation + + Change-Id: I8f494b0c895a69b8bc94656d0c6ceebecb0394d8 + +2018-01-31 15:40 +0000 [3419a048b9] Richard Mudgett + + * manager.c: Fix potential memory leak and corruption. + + ast_str_append_event_header() could potentially leak and corrupt memory if + the ast_str needed to expand to add the AMI event header. + + * Fixed to return error if the ast_str_append() failed. + + Change-Id: I92f36b855540743b208d76e274152ee2d758176d + +2018-01-31 17:27 +0000 [bcfe172f8d] Richard Mudgett + + * manager_channels.c: Reordered ast_manager_build_channel_state_string_prefix() + + * Made not allocate memory if the channel snapshot is an internal channel. + + * Free memory earlier when no longer needed. + + Change-Id: Ia06e0c065f1bd095781aa3f4a626d58fa4d28b38 + +2018-01-31 12:44 +0000 [4e4428ef3c] Corey Farrell + + * res_pjsip_registrar_expire: Delete empty module. + + Verified nothing in the testsuite lists this module as a dependency. + + Change-Id: I90c7d52c7e15e85fde3389d5eaccb05b97848813 + +2018-01-30 19:22 +0000 [1ccac0be0e] Richard Mudgett + + * bridge_softmix.c: Report not talking immediately when muted. + + Currently in app_confbridge if someone mutes a channel while that channel + is talking, the talk detection code is suspended while the channel is + muted. As far an an external observer is concerned, the muted channel's + talk status is still "talking" even though the channel is not contributing + audio to the conference bridge. When the channel is later unmuted, it + takes the usual 'dsp_silence_threshold' option time to clear the talking + status even though the channel may have stopped talking while the channel + was muted. + + * In bridge_softmix.c, clear the talking status and report talking stopped + if the channel was talking when the channel is muted. When the channel is + unmuted and the channel is still talking then report the channel as + talking since it is contributing audio to the bridge again. + + ASTERISK-27647 + + Change-Id: Ie4fdbc05a0bc7343c2972bab012e2567917b3d4e + +2018-01-30 15:00 +0000 [b9024197ab] Richard Mudgett + + * app_confbridge: Update dsp_silence_threshold and dsp_talking_threshold docs. + + The dsp_talking_threshold does not represent time in milliseconds. It + represents the average magnitude per sample in the audio packets. This is + what the DSP uses to determine if a packet is silence or talking/noise. + + Change-Id: If6f939c100eb92a5ac6c21236559018eeaf58443 + +2018-01-31 11:00 +0000 [6c5e3226ec] Richard Mudgett + + * res_pjsip_registrar.c: Fix compiler error. + + Need to include signal.h to define pthread_kill() and SIGURG. + + Change-Id: I10ae3aa4bf8e7386ac29ade78c0f2caed8e674fa + +2018-01-30 23:05 +0000 [60701b3252] Corey Farrell + + * res_pjsip_session: Prevent crash during shutdown. + + pjproject does not have a function to reverse pjsip_inv_usage_init. + This means we need to ignore any calls to the functions once shutdown is + final. + + ASTERISK-27571 #close + + Change-Id: Ia550fcba563e2328f03162d79fb185f16b7c9b9d + +2018-01-27 13:03 +0000 [720dbb5745] Corey Farrell + + * core: Create ast_atomic macro's. + + Create ast_atomic macro's to provide a consistent interface to the + common functionality of __atomic and __sync built-in functions. + + ASTERISK-27619 + + Change-Id: Ieba3f81832a0e25c5725ea067e5d6f742d33eb5b + +2018-01-28 10:10 +0000 [2b9aa6b5bb] George Joseph + + * res_pjsip_pubsub: Prune subs with reliable transports at startup + + In an earlier release, inbound registrations on a reliable transport + were pruned on Asterisk restart since the TCP connection would have + been torn down and become unusable when Asterisk stopped. This same + process is now also applied to inbound subscriptions. + + Also fixed issues in res_pjsip_registrar where it wasn't handling the + monitoring correctly when multiple registrations came in over the same + transport. + + To accomplish this, the pjsip_transport_event feature needed to + be refactored to allow multiple monitors (multiple subcriptions or + registrations from the same endpoint) to exist on the same transport. + Since this changed the API, any external modules that may have used the + transport monitor feature (highly unlikey) will need to be changed. + + ASTERISK-27612 + Reported by: Ross Beer + + Change-Id: Iee87cf4eb9b7b2b93d5739a72af52d6ca8fbbe36 + +2018-01-29 13:46 +0000 [81db0aca0f] George Joseph + + * res_pjsip_registrar_expire: Refactor into res_pjsip_register + + res_pjsip_registrar_expire remains as an empty module for now. + + Change-Id: Ib93698938bae548d2199cb542f3692d1a171239f + +2018-01-29 07:51 +0000 [cf21e9fc97] Corey Farrell + + * Sample modules.conf: comment out example load statement. + + The sample modules.conf explicitly loaded res_musiconhold.so. This is + redundent as autoload=yes is already set. It causes warnings if + res_musiconhold.so was not installed and results in an unexpected load + if the admin disables autoload without remembering to remove the + res_musiconhold load statement. + + Also remove reference to unknown module pbx_gtkconsole. + + Change-Id: Ib01888994d9f1364b14d3c9fb6ff96774a6e580a + +2018-01-29 10:20 +0000 [913773cd75] Alexander Traud + + * BuildSystem: Enable autotools in FreeBSD. + + In the current versions of FreeBSD, the apps of GNU autotools do not need to + be called with a version anymore. The latest version can be invoked directly. + Additionally, the script ./bootstrap.sh asked for autoconf 2.62 and + automake 1.9, versions which are not available as port anymore. + + ASTERISK-27637 + + Change-Id: Id7b94b80e78cc943a40ba79b697e3f70019820a7 + +2018-01-29 10:00 +0000 [156b12340e] Alexander Traud + + * app_voicemail: Avoid always true when using pointer address. + + clang 4.0 warned about this. + + ASTERISK-27635 + + Change-Id: I213f230607d7fbe97c0f5f2d60da9cbf5a2d8231 + +2018-01-19 05:13 +0000 [e7f8ef1935] Alexander Traud + + * install_prereq: Update RHEL/CentOS/Fedora libraries. + + deleted + automake git ncurses-devel pjproject-devel sqlite2-devel libsqlite3x-devel + + renamed + radiusclient-ng-devel to radcli-devel + gmime22-devel to gmime-dev + + added + alsa-lib-devel bash binutils-devel bison doxygen flex hoard make pkgconfig + speexdsp-devel uriparser-devel uw-imap-devel wget xmlstarlet zlib-devel + codec2-devel fftw-devel libsndfile-devel unbound-devel + + ASTERISK-27599 + Reported by: Said Masoud + + Change-Id: I05bb0af98ae532b2d5f37478e38b8f0762b1c035 + +2018-01-28 05:20 +0000 [aaf14670b5] Alexander Traud + + * BuildSystem: Remove unused variables. + + Because of a copy-and-paste from the script build_tools/download_externals, + the script build_tools/list_valid_installed_externals got its local variables. + However in the latter, three variables were not used actually. + + Change-Id: I252de5a98c17ea54459174875357c22c2eebe8d5 + +2018-01-25 12:06 +0000 [84a6365164] Corey Farrell + + * loader: Use ast_cli_completion_add for 'module load' completion. + + This addresses all performance issues with 'module load' completion. In + addition to using ast_cli_completion_add we stop using libedit's + filename_completion_function, instead using ast_file_read_dir. This + ensures all results are produced from a single call to opendir. + + Change-Id: I8bf51ffaa7ef1606f3bd1b5bb13f1905d72c6134 + +2018-01-27 09:44 +0000 [d9e42f27b9] Alexander Traud + + * core: Fix unused variable error in handle_show_sysinfo. + + The previous fix broke the case + HAVE_SYSINFO = no + HAVE_SYSCTL = yes + HAVE_SWAPCTL = no + which occurs on FreeBSD 11.1 for example. + + ASTERISK-26563 + + Change-Id: If77c39bc75f0b83a6c8a24ecb2fa69be8846160a + +2018-01-27 08:54 +0000 [3c26eec043] Alexander Traud + + * editline: Avoid shifting a negative signed value. + + clang 4.0 warned about this. + + ASTERISK-27630 + + Change-Id: Ie2725048c661c1792d8b1d498575144350b6e9ba + +2018-01-27 03:25 +0000 [c38da18ec6] Alexander Traud + + * headers: Consistent use of typeof and/or __typeof__. + + Because of a copy-and-paste error, the Asterisk project was using __typeof + instead of typeof. It works because typeof, __typeof, and __typeof__ are + supported by GCC, but here the escaped variant was not intended. Therefore, + for consistence, we change this to typeof. + + Change-Id: I2a962c3e596e882f691a19345445b14571a5f07c + +2018-01-24 18:25 +0000 [5d320d2d4b] Richard Mudgett + + * Update sounds release to fix siren7 and siren14 files. + + ASTERISK-16172 + + Change-Id: I2fb564258cd4db0f35952ad48b8687355c2dcad3 + +2018-01-15 11:08 +0000 [6da970bfb9] Alexander Traud + + * BuildSystem: Raise autoconf version requirement to 2.60a. + + AC_COMPUTE_INT requires at least autoconf 2.60a. + + This affects only those who contribute to Asterisk, only those who had to use + the script ./bootstrap.sh. Furthermore, this change just makes sure nobody is + using a too old autoconf. + + ASTERISK-16951 + + Change-Id: Ibca850e2fe0e77d935207bd959bacf7197d7f637 + +2018-01-26 06:48 +0000 [0afff31ed0] Alexander Traud + + * install_prereq: Download latest Jansson. + + ASTERISK-27603 + + Change-Id: I65c587534c0ae364f063d68da1bed40bb3d5e8aa + +2018-01-01 15:59 +0000 [39fcecad59] Corey Farrell + + * core: Tweak startup order. + + Move initialization of units which do not require configuration to occur + before preload modules. This leaves only units which load config between + module preload and regular load stages. + + Change-Id: I1d15384acad16a22c3498124421af474fa517478 + +2018-01-25 01:37 +0000 [23381d2c5e] Corey Farrell + + * Build System: Require __sync or __atomic functions. + + This change causes the configure script to throw an error if neither + __sync nor __atomic builtin functions are available. + + ASTERISK-27619 + + Change-Id: Ie01a281e0f5c41dfeeb5f250c1ccea8752f56ef9 + +2018-01-24 22:44 +0000 [a164b7ccfb] Corey Farrell + + * loader: Correct overly strict startup checks. + + The code which handled loading modules had too many situations which + would result in halting Asterisk startup. Treat most errors as declines + instead of failures. The exception is when the module load function + returns AST_MODULE_LOAD_FAILURE or an invalid code. + + Clear the missingdeps vector when appropriate to ensure the next loop + starts clean. + + ASTERISK-27620 + + Change-Id: I45547d9641fd45bd86d80250224417625631ad84 + +2018-01-24 18:49 +0000 [6fbd855228] Corey Farrell + + * Build System: Add support for __atomic built-in operators. + + Add a check to configure.ac for __atomic_fetch_add support. If found + use the __atomic built-in operators for ast_atomic_dec_and_test and + ast_atomic_fetchadd_int. + + ASTERISK~27619 + + Change-Id: I65b4feb02bae368904ed0fb03f585c05f50a690e + +2017-12-29 02:57 +0000 [527cf5a570] Corey Farrell + + * Remove redundant module checks and references. + + This removes references that are no longer needed due to automatic + references created by module dependencies. + + In addition this removes most calls to ast_module_check as they were + checking modules which are listed as dependencies. + + Change-Id: I332a6e8383d4c72c8e89d988a184ab8320c4872e + +2018-01-24 10:30 +0000 [b9e35bf6d3] Richard Mudgett + + * CHANGES: Add AMI action 'PJSIPShowContacts' note. + + ASTERISK-27581 + + Change-Id: If6af275764741a11030f0a4fd324fa29b376d74e + +2018-01-14 12:33 +0000 [5b8e71ab9f] Sungtae Kim + + * res_pjsip: Add AMI action 'PJSIPShowContacts' + + Add an AMI action which provides information on all + configured Contacts. + + ASTERISK-27581 + + Change-Id: I2eed42c74bbc725fad26b8b33b1a5b3161950c73 + +2018-01-18 20:19 +0000 [2f78dc2bfa] Richard Mudgett + + * pbx_variables.c: Misc fixes in variable substitution. + + * Copy more than one character at a time when there is nothing to + substitute. + + * Fix off by one error if a '}' or ']' is missing. + + * Eliminated the requirement that the "used" parameter had to point to a + variable. The current callers were always declaring a variable to meet + the requirement and discarding the value put into that variable. Now it + can be NULL. + + * In ast_str_substitute_variables_full() fixed using the bogus channel to + evaluate a function. We were not using the bogus channel we just created + to help evaluate a subexpression. + + Change-Id: Ia83d99f4f16abe47f329eb39b6ff2013ae7c9854 + +2018-01-18 09:01 +0000 [679fa5fb34] Corey Farrell + + * Add missing OPTIONAL_API and ARI dependences. + + I've audited all modules that include any header which includes + asterisk/optional_api.h. All modules which use OPTIONAL_API now declare + those dependencies in AST_MODULE_INFO using requires or optional_modules + as appropriate. + + In addition ARI dependency declarations have been reworked. Instead of + declaring additional required modules in res/ari/resource_*.c we now add + them to an optional array "requiresModules" in api-docs for each module. + This allows the AST_MODULE_INFO dependencies to include those missing + modules. + + Change-Id: Ia0c70571f5566784f63605e78e1ceccb4f79c606 + +2018-01-22 09:18 +0000 [140f937c7e] Alexander Traud + + * res_config_mysql: Avoid the header mysql_version.h. + + ASTERISK-27607 + + Change-Id: I23d00ded955c4afd5f2c3c9dc96dcb48b3f74eec + +2018-01-05 14:46 +0000 [fd557ad041] Alexander Traud + + * install_prereq: For PJProject, point users to configure script. + + The installation script and the new configure option --with-pjproject-bundled + aimed to accomplish the same. However, the installation script was out of + date. Users should go for the maintained configure option, or the Wiki. + + ASTERISK-24598 + + Change-Id: Icbf4b562f81f7c05bd24a3805bd46c0beb4ebd44 + +2018-01-20 12:58 +0000 [d427bb84a2] Alexander Traud + + * BuildSystem: Remove AC_CONFIG_AUX_DIR. + + ASTERISK-27602 + + Change-Id: I9f4d3d2bc1481748e39ad1e2b0a364d38e38978b + +2018-01-19 12:21 +0000 [693e509566] Alexander Traud + + * BuildSystem: Remove orphaned .PHONY targets. + + Change-Id: Ic44d75141b9bf99e7d72fcc82ee111b5cf6989d2 + +2018-01-19 12:14 +0000 [70137794e9] Alexander Traud + + * BuildSystem: Allow make clean all again. + + ASTERISK-27600 + Reported by: Hamid R. Hashmi + + Change-Id: I683d14d024650be04074b037b6300464519409f4 + +2018-01-19 06:16 +0000 [93471373f6] Alexander Traud + + * install_prereq: Update Debian/Ubuntu libraries. + + ASTERISK-27555 + + Change-Id: Ieb41b0cbf968af12882b39454b819ebb48b9ea46 + +2018-01-19 04:46 +0000 [4c511c1a4d] Alexander Traud + + * install_prereq: Support package manager DNF and yum option strict=1. + + This re-enables the script ./contrib/scripts/install_prereq on Fedora 22 and + newer, and on RHEL/CentOS when the option strict=1 was set for yum install. + + ASTERISK-27598 + Reported by: Hunter Stevens, Said Masoud + + Change-Id: I40f9517122aaa6906e8fc0962b4b8008dfddb368 + +2018-01-09 11:29 +0000 [77f2814d01] Benoît Dereck-Tricot + + * pbx: Reduce verbosity while loading extensions + + Each time the dial plan is reloaded, a lot of logs like these are generated: + "Added extension 'XXXXX' priority 1 to YYYYYYYYYYY" + This patch changes the log level for those logs. + + ASTERISK-27084 + + Change-Id: I5662902161c50890997ddc56835d4cafb456c529 + +2018-01-18 14:55 +0000 [5964061a21] Sean Bright + + * res_pjsip: Document tlsv1_1 and tlsv1_2 methods + + Change-Id: I67ed9039bf3f132fb20ee7a750e0aef0f704d7d3 + +2018-01-08 23:50 +0000 [33d5ab3e69] Igor Goncharovsky + + * chan_unistim: Fix hold function ability to lock/crash asterisk + + This patch fix chan_unistim hold functions to correctly support + hold function in different states possible in case of multiple lines + established on the phone + + ASTERISK-26596 #close + + Change-Id: Ib1e04e482e7c8939607a42d7fddacc07e26e14d4 + +2017-10-29 22:00 +0000 [25cb1ab05b] Corey Farrell + + * loader: Add support for built-in modules. + + * Add SRC_EMBEDDED variable to main/Makefile. Built-in module sources + must be listed in this variable to ensure they get the correct CFLAGS. + + Change-Id: I920852bc17513a9c2627061a4ad40511e3a20499 + +2017-12-09 00:03 +0000 [e6142a1282] Corey Farrell + + * loader: Rework load_resource_list. + + Use a single loop in a loop to scan the resource list attempting to + dlopen each module. The inner loop is repeated until it doesn't do any + work, then it is run one more time to allow printing of error messages. + + Change-Id: I60c15cd57ff9680b62e2a94c7519401fa4a38e45 + +2017-12-08 23:30 +0000 [a80cbb046e] Corey Farrell + + * loader: Remove global symbol only startup phase. + + Dependency loader is now in place so we no longer need a separate loader + phase for global symbols only. This simplifies the loader and allows us + to minimize calls to dlopen. + + Change-Id: I33e3174d67f3b4552d3d536326dcaf0ebabb097d + +2017-11-21 23:39 +0000 [3b73ed28c5] Corey Farrell + + * loader: Process module dependencies. + + * Add string vectors for requires, optional_apis and enhances. + * Add reffed_deps module vector for holding references to dependencies. + * Initialize string vectors after final dlopen of each module. + * Free string vectors and clear references from reffed_deps in + module_destroy. + * Create functions necessary to process module dependencies and enforce + load order. + + Module dependencies result in automatic references being managed by the + module loader. This enforces unload order. + + Change-Id: I9be08d1dd331aceadc1dcba00b804d71360b2fbb + +2017-12-27 17:44 +0000 [86b484dec7] Graham Mainwaring + + * app_followme: Add a prompt to be read when a call is connected + + This patch adds the ability to configure a prompt which will be read + to the "winner" who pressed 1 (or the configured value) and received + the call. + + ASTERISK-24372 #close + + Change-Id: I6ec1c6c883347f7d1e1f597189544993c8d65272 + +2018-01-17 00:28 +0000 [4fd303b630] Corey Farrell + + * loader: Miscellaneous fixes. + + * Remove comment about lazy load. + * Improve message about module already being loaded and running. + * Handle allocation error in add_to_load_order. + * Dead code elimination from modules_shutdown. + + Change-Id: I22261599c46d0f416e568910ec9502f45143197f + +2018-01-17 08:36 +0000 [2a1b52cc67] Alexander Traud + + * BuildSystem: Use the detected name for MD5 everywhere. + + Affacted the (automatic) download script for external modules: + ./build_tools/download_externals + + ASTERISK-27596 + + Change-Id: If4c3176f7bf58df32fec6e02a659f1a78d57cf4b + +2018-01-17 07:11 +0000 [4cd3f5c162] Alexander Traud + + * BuildSystem: Invoke install not in GNU but POSIX style. + + ASTERISK-27594 + + Change-Id: Iaaa6a19d2fe031dffcba441d0502a7ea65c93cb3 + +2018-01-17 06:47 +0000 [7e7a20642c] Alexander Traud + + * BuildSystem: In OpenBSD, xmlstarlet is xml. + + ASTERISK-27593 + + Change-Id: I1c7087f7f7582e40b3312c690d912c9a86466805 + +2018-01-17 02:51 +0000 [8f31b70246] Alexander Traud + + * BuildSystem: Detect external library Lua in version 5.3. + + On some platforms, you decide to go for one specific version of Lua, for + example in OpenBSD. On other platforms, you are able to install several versions + side-by-side, for example in Ubuntu and Fedora. Asterisk already works with + Lua 5.3. Asterisk failed to detect Lua 5.3 on those platforms which allow + several versions. + + ASTERISK-27592 + + Change-Id: If7a4b395d844a464e9a1f4f626c5bff4ee67eed8 + +2017-12-22 19:50 +0000 [8494e78010] Richard Mudgett + + * res_pjsip: Split type=identify to IP address and SIP header matching priorities + + The type=identify endpoint identification method can match by IP address + and by SIP header. However, the SIP header matching has limited + usefulness because you cannot specify the SIP header matching priority + relative to the IP address matching. All the matching happens at the same + priority and the order of evaluating the identify sections is + indeterminate. e.g., If you had two type=identify sections where one + matches by IP address for endpoint alice and the other matches by SIP + header for endpoint bob then you couldn't predict which endpoint is + matched when a request comes in that matches both. + + * Extract the SIP header matching criteria into its own "header" endpoint + identification method so the user can specify the relative priority of the + SIP header and the IP address matching criteria in the global + endpoint_identifier_order option. The "ip" endpoint identification method + now only matches by IP address. + + ASTERISK-27491 + + Change-Id: I9df142a575b7e1e3471b7cda5d3ea156cef08095 + +2018-01-16 08:32 +0000 [7ed7d525fb] Richard Mudgett + + * taskprocessor.c: Increase the number of tps_singletons container buckets. + + Since v12 the number of taskprocessors in the system has increased a lot. + Small systems can easily have over a hundred and larger systems can have + thousands. + + Most uses of the tps_singletons container deal with creating and + destroying the taskprocessors. However, the pjsip distributor looks up + taskprocessors/serializers by name frequently. It needs to find the + serializer for incoming SIP responses to distribute them to the + appropriate serializer. + + Change-Id: Ice0603606614ba49f7c0c316c524735c064e7e43 + +2018-01-16 08:20 +0000 [f0a3c977d6] George Joseph + + * pjproject_bundled: Prevent crash on bad outgoing header + + We still need to figure out how a bad header is getting into the + outgoing message but this patch to pjproject prevents attempting + to print that header and causing a crash. + + For several users, this crash happens when sending 183 progress + messages. + + ASTERISK-26832 + Reported by: Ross Beer, Jan Rozhon + + Change-Id: Ie5c5a921c890c843587763e7f33f987dfe66bd16 + +2018-01-16 06:34 +0000 [a046305fae] Alexander Traud + + * BuildSystem: Avoid $EUID and use id -u instead. + + Makefile included a call to ${EUID} which requires the shell bash. To keep + compatibility with other shells like dash or ksh, use id -u instead. + + ASTERISK-27589 + + Change-Id: Ia6e74f5bc9aab4e6dc62b7439f647b7964e6f657 + +2018-01-15 18:03 +0000 [6fbe315f77] Richard Mudgett + + * cel_odbc.c: Fix menuslect module description display. + + Asterisk's makefile for menuselect has a very simple source file parsing + script that looks for AST_MODULE_INFO lines to extract the quoted string + as a module description. If it does not find a quoted string it uses the + whole line as the description. + + Change-Id: I80f13a63818e4e28d683639a94a4dfaea405c1d5 + +2017-11-19 16:30 +0000 [9cfdb81e91] Corey Farrell + + * loader: Add dependency fields to module structures. + + * Declare 'requires' and 'enhances' text fields on module info structure. + * Rename 'nonoptreq' to 'optional_modules'. + * Update doxygen comments. + + Still need to investigate dependencies among modules I cannot compile. + + Change-Id: I3ad9547a0a6442409ff4e352a6d897bef2cc04bf + +2017-11-19 20:10 +0000 [35ae99c712] Corey Farrell + + * vector: Additional string vector definitions. + + ast_vector_string_split: + This function will add items to an ast_vector_string by splitting values + of a string buffer. Items are appended to the vector in the order they + are found. + + ast_vector_const_string: + A vector of 'const char *'. + + Change-Id: I1bf02a1efeb2baeea11c59c557d39dd1197494d7 + +2018-01-15 10:57 +0000 [645297614e] Alexander Traud + + * BuildSystem: Resolve resolv.h not via Generic but Particular Header-Check. + + ASTERISK-27585 + + Change-Id: I27c67563788e6f67eeda5fb51a741823a50a95e2 + +2018-01-13 13:49 +0000 [cabe80631b] George Joseph + + * config_transport: Enable TCP_NODELAY on TLS transports + + We did this for TCP transports already but I'm not sure why we + didn't do it for TLS transports. + + ASTERISK_27474 #not_final_fix + + Change-Id: I5b1ef4b882f7b859e718236686b7898751dbb262 + +2018-01-12 18:37 +0000 [de7f2a6cb4] Corey Farrell + + * res_stasis_recording: Allow symbolic links in configured recordings dir. + + If any component of ast_config_AST_RECORDING_DIR is a symbolic link we + would incorrectly assume the ARI user was trying to escape the recording + path. Create additional check to check the recording directory's + realpath, only deny access if both do not match. + + This is needed by the testsuite when run by 'run-local'. + + Change-Id: I9145e841865edadcb5f75cead3471ad06bbb56c0 + +2018-01-12 12:00 +0000 [99535b0497] Corey Farrell + + * menuselect: Remove unused dev-mode option TRACE_FRAMES. + + ASTERISK-27575 #close + + Change-Id: Ica3a522892afed7a96816a5ecf140e1671f46ad4 + +2018-01-12 03:50 +0000 [eb9b85baec] Alexander Traud + + * res_config_pgsql: Avoid typecasting an int to unsigned char. + + clang 5.0 warned about this. + + ASTERISK-27576 + + Change-Id: If41f400a51973c06cdb9b75462e535b616bfe385 + +2018-01-12 03:17 +0000 [cff3add680] Alexander Traud + + * BuildSystem: Really do not pass unknown-warning options to the compiler. + + When an older GCC version is called with a too new warning option, GCC exited + with an error and Asterisk was not built. Therefore, the configure script tests + the installed compiler whether it supports that warning option. If not, Asterisk + does not pass it to the installed compiler. However, some compilers (like clang) + do not exit (error) but give just a warning in such a case. Because the compiler + did not exit, Asterisk passed the unknown-warning option. + + ASTERISK-27560 + + Change-Id: Ia9d148e689c173df4e91699113605dab2de36038 + +2018-01-12 04:27 +0000 [685bab254c] Alexander Traud + + * app_osplookup.c: Avoid two format truncations. + + GCC 7 warned about this. + + ASTERISK-27578 + + Change-Id: I4a00458dbe9b575ef04338b6a7852272745e1552 + +2018-01-12 04:03 +0000 [797747afa7] Alexander Traud + + * chan_ooh323: Avoid typecasting an int to unsigned short. + + clang 5.0 warned about this. + + ASTERISK-27577 + + Change-Id: I898fe4255023138a9e8b579fe4482fcf582f2b78 + +2018-01-05 15:13 +0000 [b9e2b72de6] Alexander Traud + + * install_prereq: Update Debian/Ubuntu libraries. + + ASTERISK-27555 + + Change-Id: I0818b6e42631be1b69237e2b41d3415275693e53 + +2018-01-11 12:05 +0000 [6d5f4768a4] Joshua Colp + + * chan_sip: Check that an iostream exists before accessing. + + Before getting the file descriptor for an iostream check + that it is present. + + ASTERISK-27534 + + Change-Id: Ie0aa1394007a37c30e337ea1176a6fb3a63bc99c + +2018-01-11 08:09 +0000 [30b5ec023f] Tzafrir Cohen + + * Ignore quilt .pc directory, used in deb packaging + + Debian packaging uses quilt to manage patches. Book-keeping for them is + done using quilt (either directly, or in a compatible format), and + tracked in the directory .pc . + + Change-Id: I22c90f3d7ab8918e6216e7b686de6fa0e1fdaa7b + Signed-off-by: Tzafrir Cohen + +2018-01-09 11:23 +0000 [f0eb00d1e7] Corey Farrell + + * stasis: Remove silly usage of RAII_VAR. + + Change-Id: Ib11193531e797bcb16bba560a408eab155f706d1 + +2018-01-09 11:09 +0000 [a383e1ddb1] Corey Farrell + + * stasis_cache_pattern: Remove silly usage of RAII_VAR. + + Change-Id: Ic98a51f555062cd863b6db3f8d76065943a9dea3 + +2018-01-09 16:23 +0000 [9e2fcb82ed] Sean Bright + + * cdr_syslog: Deprecate unmaintained module + + There has been an open issue against cdr_syslog (ASTERISK~14441) about + a race condition for 7.5 years that has never been addressed. Because + this module is effectively unmaintained and currently broken, there is + no sense in keeping it around. + + If logging CDRs to syslog is a desirable feature, it would probably be + better to write the logs directly to the syslog server via socket + instead of using the facilities provided by openlog/syslog/closelog. + Doing so would address the race condition referenced in the associated + issue. + + Change-Id: Ic77b94cd97f355a9cf5b1d3f3444964a6e0ba5dc + +2018-01-09 11:16 +0000 [0de004dd85] Corey Farrell + + * stasis_bridges: Remove silly usage of RAII_VAR. + + Change-Id: I0fa7ab05454f183dc4ff10e26d18776d2b0fcf1f + +2018-01-09 11:10 +0000 [01127e1664] Corey Farrell + + * stasis_cache: Remove silly usage of RAII_VAR. + + Change-Id: Ifa95e5801c949df296c7e4376347730fb0ed52ef + +2018-01-09 10:57 +0000 [175a9ef873] Corey Farrell + + * stasis_endpoints: Remove silly usage of RAII_VAR. + + Change-Id: Ic099dc552f36c353c89783a4bcfd09f010432733 + +2018-01-09 10:55 +0000 [4b655184b0] Corey Farrell + + * stasis_message_router: Remove silly usage of RAII_VAR. + + Change-Id: I50d6ae230920e0b878ed9cc8f79eef746e06701d + +2018-01-09 10:53 +0000 [3074c4165c] Corey Farrell + + * stasis_system: Remove silly usage of RAII_VAR. + + Change-Id: Iedbe5656cee68cd3a96a953558764aa02d4a0c3b + +2018-01-03 17:26 +0000 [8f3167c5f1] Richard Mudgett + + * res_pjsip.c: Update the endpoint identification documentation. + + * Endpoint identify_by documentation. + * IP/Header endpoint identifier documentation. + + Change-Id: Id92f00b495acca7be945daf749d2abd7f76a0b5a + +2018-01-03 15:20 +0000 [42a61d9db6] Richard Mudgett + + * res_pjsip_endpoint_identifier_ip.c: Remove unnecessary requirement. + + The requirement that "ip" must be in the endpoint identify_by list to + allow the type=identify method to identify the endpoint is not necessary. + The "ip" identifier method can match one and only one endpoint. To even + work, the "ip" identifier method configuration must explicitly specify the + identified endpoint. Therefore, why bother configuring the type=identify + identifier in the first place? The requirement only adds the potential + for configuration errors for no benefit. Even worse, those configuration + errors cannot be detected when the configuration loads. The requirement + was introduced with the ASTERISK_27206 patch. + + * Remove the code change that enforces the requiremnt. Listing the "ip" + method in the identify_by value is simply documentation. + + Change-Id: Ia057f92a33fb5d9f51dc5d5692e3d5ee1a6f2c11 + +2018-01-05 19:03 +0000 [a7bbb18e5c] Richard Mudgett + + * res_pjsip.c: Fix ident_to_str() and refactor ident_handler(). + + * Extracted sip_endpoint_identifier_type2str() and + sip_endpoint_identifier_str2type() to simplify the calling functions. + + * Fixed pjsip_configuration.c:ident_to_str() building the endpoint's + identify_by value string. + + Change-Id: Ide876768a8d5d828b12052e2a75008b0563fc509 + +2018-01-04 17:04 +0000 [be488eb14a] Richard Mudgett + + * res_pjsip_endpoint_identifier_ip.c: Allow multiple IdentifyDetail AMI events. + + The AMI PJSIPShowEndpoint action could only list one IdentifyDetail AMI + event per endpoint. However, there is no reason that multiple + type=identify sections cannot identify the same endpoint. + + * Reworked format_ami_endpoint_identify() to generate as many + IdentifyDetail AMI events as there are matching identifiers. + + Change-Id: Ie146792aef72d78e05416ab5b27bc552a30399db + +2018-01-05 05:51 +0000 [3a7d917256] Alexander Traud + + * translate: Avoid absolute value on unsigned substraction. + + ast_format_get_sample_rate(.) returns an unsigned type. The difference of a + substraction between two unsigned types does not get implicitly converted to a + signed type. Therefore, using abs(.) did not make sense. + + ASTERISK-27549 + + Change-Id: Ib904d9ee0d46b6fdd1476fbc464fbbf813304017 + +2018-01-09 08:22 +0000 [25022de875] Sean Bright + + * Revert "codec_opus: Make libcurl a dependency in menuselect" + + This reverts commit 028f4320de60a204e457ad606ab0a3318493b431. + + Change-Id: Ieb91f825cb55202a937f5361c01d356e7662b70c + +2018-01-08 10:54 +0000 [a21841bf40] Joshua Colp + + * res_pjsip_session: Always bundle streams if WebRTC is enabled. + + Some WebRTC clients can't handle renegotiation with the addition of + streams that include an offer to bundle. They instead expect the + newly added streams to already be bundled. This change does such a thing + if WebRTC support is enabled on an endpoint. + + ASTERISK-27566 + + Change-Id: I7fe9b7ac35a2798627d9c2c8369129f407af6461 + +2018-01-08 20:25 +0000 [d46cbe788a] Corey Farrell + + * bridge_softmix: Fix sfu_append_source_streams test. + + * validate_stream: zero result from ast_format_cap_identical indicates + they are not identical, rather than non-zero indicating an error. + * validate_original_streams: use num_streams instead of + ARRAY_LEN(params). + * Fix declaration of alice_dest_stream and bob_dest_stream. + + Change-Id: I6b1dd8bed10439d3c7406f033eb1896b6c419147 + +2018-01-08 18:47 +0000 [5380fb9978] Corey Farrell + + * app_confbridge: Fix NULL check in action_kick_last. + + The check for last_user == NULL needs to happen before we dereference + the variable, previously it was possible for us to check flags of a NULL + last_user. + + Change-Id: I274f737aa8af9d2d53e4a78cdd7ad57561003945 + +2018-01-06 02:17 +0000 [55a540272f] Corey Farrell + + * res_stasis: Reduce RAII_VAR usage. + + In addition to being a micro-optimization (RAII_VAR has overhead), this + change improves output of REF_DEBUG. Unfortunately when RAII_VAR calls + ao2_cleanup it does so from a generated _dtor_varname function. For + example this caused _dtor_app to release a reference instead of + __stasis_app_unregister. + + Change-Id: I4ce67120583a446babf9adeec678b71d37fcd9e5 + +2018-01-04 18:47 +0000 [faeb9e1b26] Sungtae Kim + + * res_pjsip: Add AMI action 'PJSIPShowAuths' + + Add an AMI action which provides information on all + configured Auths. + + ASTERISK-27547 + + Change-Id: I1a88a75b38a2b1dd9d1de6c0307b20a3f584c817 + +2018-01-07 21:38 +0000 [8b3083cac5] Corey Farrell + + * res_stasis: Fix dial bridge unload. + + If the dial bridge has been created it must be released by calling + ast_bridge_destroy, simply releasing the ao2 reference is not enough. + + Also move stasis_app_control_shutdown earlier in unload to ensure the + bridge cannot be created or grabbed after the app_bridges container is + released. + + Change-Id: I372302de94ca63876069e2585a049c5060e5e767 + +2018-01-07 20:21 +0000 [6870ba5f26] Corey Farrell + + * res_stasis: Fix app_is_subscribed_bridge_id. + + Instead of searching for bridge_id provided in an argument this function + always searched for BRIDGE_ALL first. Rewrite this function to work + like the similar functions for channel and endpoint functions. + + Change-Id: Ib5caca69e11727c5c8a7284a1d00621f40f1e60a + +2018-01-05 07:44 +0000 [7e9781c25e] Alexander Traud + + * General: Silence modules on (un)load. + + Some (normally optional) modules created notices, warnings, and even errors + in normal situations like (un)load. This cluttered the command-line interface + (CLI) on start and while stopping gracefully. However, when an user went for + the script './contrib/scripts/install_prereq', those modules get compiled-in + because their prerequisites were met at compile time. Furthermore, because of + ASTERISK_27475, the former talkative module 'res_curl' is built as side-effect. + + ASTERISK-27553 + + Change-Id: I9f105f46d72553994e820679bfde3478a551b281 + +2018-01-06 15:40 +0000 [512286e3c8] Alexander Traud + + * BuildSystem: Really do not pass unknown-warning options to the compiler. + + When an older GCC version is called with a too new warning option, GCC exited + with an error and Asterisk was not built. Therefore, the configure script tests + the installed compiler whether it supports that warning option. If not, Asterisk + does not pass it to the installed compiler. However, some compilers (like clang) + do not exit (error) but give just a warning in such a case. Because the compiler + did not exit, Asterisk passed the unknown-warning option. + + ASTERISK-27560 + + Change-Id: Ia9b7747f649b27ff5e9f75c3db3fee4fe7a29621 + +2018-01-06 01:25 +0000 [f84fcc1fc1] Alexander Traud + + * General: Avoid implicit conversion to char when changes value to negative. + + clang 5.0 warned about this. + + ASTERISK-27557 + + Change-Id: I7cceaa88e147cbdf81a3a7beec5c1c20210fa41e + +2018-01-05 06:06 +0000 [b12c8cffad] Alexander Traud + + * bridge_softmix: Removed unused parameter from check_binaural_position_change(.). + + Found as a result of the function being passed an uninitalized variable by + clang. + + ASTERISK-27550 + + Change-Id: I8af3bd84656b685a956d498459f8db3613f68954 + +2018-01-06 06:45 +0000 [ad3252ccef] Alexander Traud + + * editline: Avoid comparison between pointer and zero character constant. + + gcc 7.2 warned about this. + + ASTERISK-27559 + + Change-Id: I48960dda9cf0a11b6a9426f775e632363f8caa74 + +2018-01-06 05:01 +0000 [ef68df9111] Alexander Traud + + * codec_gsm: Avoid shifting a negative signed value. + + clang 5.0 warned about this. + + ASTERISK-27558 + + Change-Id: Icc452ecb0d86bbeba78dae768cc472ec540699df + +2018-01-04 12:23 +0000 [b20b5758d9] Richard Mudgett + + * res_pjsip_endpoint_identifier_ip.c: Fix apply identify validation. + + The ip_identify_apply() did not validate the configuration for simple + static configuration errors or deal well with address resolution errors. + + * Added missing configuration validation checks. + * Fixed address resolution error handling. + * Demoted an error message to a warning since it does not fail applying + the identify object configuration. + + Change-Id: I8b519607263fe88e8ce964f526a45359fd362b6e + +2018-01-04 17:42 +0000 [705e6c04b3] Richard Mudgett + + * res_pjsip.c: Fix endpoint identifier registration name search. + + If an endpoint identifier name in the endpoint_identifier_order list is a + prefix to the identifier we are registering, we could install it in the + wrong position of the list. + + Assuming + endpoint_identifier_order=username,ip,anonymous + + then registering the "ip_only" identifier would put the identifier in the + wrong position of the priority list. + + * Fix incorrect strncmp() string prefix matching. + + Change-Id: Ib8819ec4b811da8a27419fd93528c54d34f01484 + +2018-01-05 03:33 +0000 [af064eaf13] Alexander Traud + + * BuildSystem: Find ptlib-config on Debian/Ubuntu. + + The current configure script requires that tool when libpt-dev is installed. + libpt-dev was installed by libopenh323-dev, bacause you wanted to go for H.323 + based channel drivers. + + ASTERISK-25329 + + Change-Id: I9c6ab78b7246c21536e1d252dcbffe682f63f83d + +2018-01-05 06:42 +0000 [f0c8f04c73] Alexander Traud + + * chan_ooh323: Limit outgoinglimit to positive values as intended. + + ASTERISK-27552 + + Change-Id: Ifbf9d51e7374ca2e8b27ec568f6770050fc1a854 + +2018-01-05 06:19 +0000 [09f339bda5] Alexander Traud + + * ooh323cDriver: Fix typo in header guard. + + ASTERISK-27551 + + Change-Id: I39ff66031e3373e895e2bc47b23a5e860ea4e012 + +2018-01-05 03:36 +0000 [bc1b4f4d43] Alexander Traud + + * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf. + + ASTERISK-26046 + + Change-Id: I48f05698c235f709225b92bec5aa260fb57d69d1 + +2018-01-04 15:37 +0000 [cfb88f3ac1] Corey Farrell + + * pbx: Prevent execution of NULL pointer. + + pbx_extension_helper has a check for q->swo.exec == NULL but it doesn't + actually return so we would still run the function. Fix the return. + Move the 'int res' variable into the only scope which uses it. + + Also fix a copy-paste error in ast_pbx_init which could result in a + crash on allocation failure (we exit with a normal error instead). + + Change-Id: I0693af921fdc7f56b6a72a21fb816ed08b960a69 + +2018-01-04 10:50 +0000 [82cf585fb5] Corey Farrell + + * translators: Don't use ast_module_running_ref. + + Translators are run during module load before the module is actually + running, so it cannot use ast_module_running_ref. + + ASTERISK-20346 + + Change-Id: Iaa0e75da99c696e38000f1a41e340abbd7a88f56 + +2018-01-04 09:39 +0000 [da365affbd] Corey Farrell + + * rtp_engine: Add missing unlock. + + Change-Id: I380c31a255e060309f4916da11176e0d00813215 + +2018-01-04 09:30 +0000 [73bf5035b8] Corey Farrell + + * res_pjsip_history: Add missing unlock to CLI command. + + Change-Id: I872060a30543776a176a316309602d924a23eb29 + +2018-01-04 09:27 +0000 [aaed0b8b3a] Corey Farrell + + * aco: Fix NULL dereference in error path. + + Change-Id: Id505167cf0f9414a3c144fa2c1e181a2cf288694 + +2018-01-03 19:07 +0000 [e3c9314a2e] Corey Farrell + + * func_odbc: Add missing unlock's to acf_odbc_read. + + Change-Id: I828329ecbd252ae8f27a369a046d2b03102b07c6 + +2017-12-29 18:24 +0000 [55f1d69c43] Corey Farrell + + * loader: Create ast_module_running_ref. + + This function returns NULL if the module in question is not running. I + did not change ast_module_ref as most callers do not check the result + and they always call ast_module_unref. + + Make use of this function when running registered items from: + * app_stack API's + * bridge technologies + * CLI commands + * File formats + * Manager Actions + * RTP engines + * Sorcery Wizards + * Timing Interfaces + * Translators + * AGI Commands + * Fax Technologies + + ASTERISK-20346 #close + + Change-Id: Ia16fd28e188b2fc0b9d18b8a5d9cacc31df73fcc + +2018-01-03 10:41 +0000 [62f862e2cd] Kevin Harwell + + * res_pjsip_session: Check if sequence header is missing + + The pjsip_msg_find_hdr function can return NULL. This patch adds a check + when searching for the sequence header to make sure a NULL pointer is never + de-referenced. + + Change-Id: I19af23aeeded65be016be92360e8cb7ffe51fad2 + +2018-01-02 07:36 +0000 [9b5d1454b4] Tzafrir Cohen + + * cdr: submit: fix logic of test for batch mode + + ASTERISK-27539 #close + + Change-Id: I33cdf329d2bb4486dcae975c450f6aae94c515f7 + +2017-12-29 23:14 +0000 [ffbf5be116] Sungtae Kim + + * res_pjsip: Add AMI action 'PJSIPShowAors' + + Add an AMI action which provides information on all + configured AORs. + + ASTERISK-27537 + + Change-Id: If8b990a00909e5b6c0f04a3b8dccd9903dc445eb + +2018-01-02 00:26 +0000 [f298178583] Corey Farrell + + * aco: Add missing aco_option_type_string for OPT_TIMELEN_T. + + ASTERISK-27117 + + Change-Id: I8f6c34bb30830be9f7a40823723eb4dcaaa91c61 + +2017-12-31 10:26 +0000 [15f8b9b8bf] Sean Bright + + * ice: Increase foundation buffer size + + Per RFC 5245, the foundation specified with an ICE candidate can be up + to 32 characters but we are only allowing for 31. + + ASTERISK-27498 #close + Reported by: Michele Prà + + Change-Id: I05ce7a5952721a76a2b4c90366168022558dc7cf + +2017-12-29 22:03 +0000 [b32d6d5e2d] Corey Farrell + + * astobj2: Create case-insensitive variants of container function macros. + + * AO2_STRING_FIELD_CASE_HASH_FN + * AO2_STRING_FIELD_CASE_CMP_FN + * AO2_STRING_FIELD_CASE_SORT_FN + + Change-Id: I11af8c6a0c43380a42732553f519c667abb842cf + +2017-12-29 22:59 +0000 [bc73337e07] Corey Farrell + + * core: Use macros to generate ao2_container callbacks where possible. + + This uses AO2_STRING_FIELD_HASH_FN and AO2_STRING_FIELD_CMP_FN where + possible in the Asterisk core. + + This removes CMP_STOP from the result of CMP_FN callbacks for the + following structure types: + * ast_bucket_metadata + * ast_bucket_scheme + * generic_monitor_instance_list (ccss.c) + * ast_bucket_file (media_cache.c) + * named_acl + + Change-Id: Ide4c1449a894bce70dea1fef664dade9b57578f1 + +2017-12-29 14:50 +0000 [0fe7df641a] Corey Farrell + + * datastore: Add automatic module references. + + Add a reference to the calling module when it is active to protect + access to datastore->info. Remove module references done by + func_periodic_hook as the datastore now handles it. + + ASTERISK-25128 #close + + Change-Id: I8357a3711e77591d0d1dd8ab4211a7eedd782c89 + +2017-12-28 13:27 +0000 [2dde5bef47] Richard Mudgett + + * stasis_channels.c: Misc cleanup. + + * Use current OBJ_SEARCH_xxx defines instead of the deprecated versions. + + * Fix hash_cb and cmp_cb container functions to correctly use the + OBJ_SEARCH_xxx values. + + * Remove incorrect usage of CMP_STOP. Most uses in the system have no + effect. This allows the collapse of channel_role_single_cmp_cb() and + channel_role_multi_cmp_cb() into channel_role_cmp_cb(). + + * Remove unnecessary usage of RAII_VAR(). + + Change-Id: I02c405518cab22aa2a082b61e2353bf7cd629a70 + +2017-12-13 15:43 +0000 [898b3b080a] Sean Bright + + * cdr_mysql: Make sure connection charset is always set + + When the MYSQL_OPT_RECONNECT option is enabled, the MySQL client API + will transparently reconnect when it needs to. Ideally this simplifies + our code, but when this reconnection occurs all connection state is + lost. Because we are not notified that this has happened, we don't know + to set our character set again (with "SET NAMES 'xyz'"). + + Rather than calling SET NAMES, we instead set the MYSQL_SET_CHARSET_NAME + option which will do it for us under the hood on each connect. This + option has been present in the MySQL C API for at least 15 years, so it + should be safe for most installations. + + I also snuck a few other changes into this patch: + + * Default the MySQL port to MYSQL_PORT (3306) instead of 0 if it's not + defined. + + * Fix some erroneous and/or silly checks on the contents of the + configuration ast_str values. + + ASTERISK-27366 #close + Reported by: Halil İbrahim YILDIZ + + Change-Id: I36bf8dc5d5f83584e803b3b1a151dea9396ab8f5 + +2017-12-27 20:48 +0000 [d69b7c6c6d] Richard Mudgett + + * manager.c: Update AMI Status event documentation + + The AMI Status event had linkedid listed twice and was missing the + effective connected line name and number headers. + + NOTE: The linkedid and other standard channel snapshot fields in the XML + documentation are part of the XML template defined in + doc/appdocsxml.xslt. + + Change-Id: I004c4c4f9e7b40ef55035c831702721bec82496c + +2017-12-27 22:36 +0000 [fa36f9c01b] Richard Mudgett + + * bridge_native_rtp.c: Fix reentrancy framehook crash. + + If two channels enter different native rtp bridges at the same time it is + possible that the framehook interface data pointer can be corrupted + because the struct variable was declared static. + + * Fixed the reentrancy corruption by changing the framehook interface + struct static variable to a stack local variable. + + * Moved the hook.data assignment outside of the channel lock. It did not + need the lock's protection. It probably was giving a false sense of + security. + + The testsuite + channels/pjsip/basic_calls/two_parties/nominal/alice_initiated/bob_hangs_up + test caught this with MALLOC_DEBUG and DO_CRASH enabled. + + Change-Id: If9e35b97d19209b0f984941c1d8eb5f7c55eea91 + +2017-12-27 20:22 +0000 [1d3dc9aea2] Richard Mudgett + + * func_channel.c: Update MASTER_CHANNEL documentation + + Be more explicit in what is meant by the master channel to eliminate + misunderstanding. + + ASTERISK-23133 + + Change-Id: I453bcaf4b99404a5a3e345dbf093ac6c1afcfc72 + +2017-12-27 19:27 +0000 [6338a03ce9] Corey Farrell + + * menuselect: Fix check for running configure. + + menuselect/Makefile checks that autoconfig.h and makeopts were newer + than the '.in' files. Unfortunately running ./configure does not touch + autoconfig.h unless the contents will change. + + Instead of looking at autoconfig.h we just need to ensure that makeopts + is newer than configure. + + Also make change to configure.ac so bootstrap.sh doesn't re-add the + extra trailing line-feed. + + Change-Id: Ief1f831d6717007f9cebb668c14e92782cd2b794 + +2017-12-21 23:56 +0000 [94eb12ca56] Corey Farrell + + * cdr: Missing NULL check and unlock. + + * handle_dial_message: Missing a check for NULL peer. + * cdr_generic_register: Missing unlock on allocation failure. + + cdr_generic_register is fixed by reordering so the new structure is + allocated and initialized before locking the list. + + Change-Id: I5799b99270d1a7a716a555c31ac85f4b00ce8686 + +2017-12-23 22:51 +0000 [23aa20bf20] Corey Farrell + + * loader: Add volatile to resource_being_loaded. + + Some compiler optimizers seem to assume that dlopen will not use + __attribute__((constructor)) functions to call back to the program. + This was causing resource_being_loaded to be optimized away completely. + + ASTERISK-27531 #close + Tested By: abelbeck + + Change-Id: If17a3b889e06811a0e7119f0539d052494d6ece9 + +2017-12-20 16:17 +0000 [553306548c] Kevin Harwell + + * AST-2017-014: res_pjsip - Missing contact header can cause crash + + Those SIP messages that create dialogs require a contact header to be present. + If the contact header was missing from the message it could cause Asterisk to + crash. + + This patch checks to make sure SIP messages that create a dialog contain the + contact header. If the message does not and it is required Asterisk now returns + a "400 Missing Contact header" response. Also added NULL checks when retrieving + the contact header that were missing as a "just in case". + + ASTERISK-27480 #close + + Change-Id: I1810db87683fc637a9e3e1384a746037fec20afe + +2017-12-22 14:00 +0000 [c2529a352c] Corey Farrell + + * astobj.h: Remove from Asterisk core. + + This is the old ASTOBJ macro's which are no longer used except by the + deprecated netsock.c. Move it to the chan_iax2 include folder so it + does not get used elsewhere. + + Change-Id: I7e4ae96678b36b9f41d3cae14b167f110eb5d349 + +2017-12-22 08:23 +0000 [fd0ca1c3f9] Sean Bright + + * Remove as much trailing whitespace as possible. + + Change-Id: I873c1c6d00f447269bd841494459efccdd2c19c0 + +2017-12-21 09:51 +0000 [a1a179c09d] Sean Bright + + * Fix some invalid Unicode characters + + configs/samples/minivm.conf.sample contains invalid UTF-8, but that + appears to be intentional. + + Change-Id: I7b1e0d332f3380fd0425962a3c9c55f9b200c8cc + +2017-12-20 21:11 +0000 [f2f51ff4ea] Corey Farrell + + * app_voicemail: Fix file copy error handling. + + Fix error where input/output file descriptors would be closed multiple + times. + + Change-Id: Iba5140b60cb7de79e3d5d92be3c256947aa99da9 + +2017-12-20 14:54 +0000 [9415ec2877] Sean Bright + + * docs: Remove old API changes documentation + + Change-Id: I1bc7957121cc7ae27dca04acc3613f4e1858476a + +2017-12-20 11:14 +0000 [1b80ffa495] Corey Farrell + + * Fix Common Typo's. + + Fix instances of: + * Retreive + * Recieve + * other then + * different then + * Repeated words ("the the", "an an", "and and", etc). + * othterwise, teh + + ASTERISK-24198 #close + + Change-Id: I3809a9c113b92fd9d0d9f9bac98e9c66dc8b2d31 + +2017-12-20 11:30 +0000 [3625e91586] Richard Mudgett + + * manager.h: Bump AMI version + + Change-Id: I62e6ddeb261ef012687e1fb6734c554e2499b6bf + +2017-12-20 10:23 +0000 [aaa3884d4a] Corey Farrell + + * bridge: Old channel video source not set to NULL after unref. + + The bridge holds onto the old channel video source after it's been + released. This can lead to use after free errors. + + ASTERISK-27229 #close + + Change-Id: Ib2dab61677dd8a21f7ad53cdc9b8ca93297838b3 + +2017-12-20 10:13 +0000 [c2850bfebc] Corey Farrell + + * core: Fix unused variable error in handle_show_sysinfo. + + Apparently in OSX it's possible for OSX to HAVE_SYSCTL but not + HAVE_SYSINFO or HAVE_SWAPCTL. In this case freeswap caused an unused + variable error. + + ASTERISK-26563 #close + + Change-Id: I8ec5b1897b786cc1abaf62264aa75039eea05510 + +2017-12-20 00:53 +0000 [fff7782cf5] Corey Farrell + + * app_festival: Fix fd leak on connection failure. + + Change-Id: If5efaddcf735ff7d17e55c36cc1388946cee9e0f + +2017-12-18 20:12 +0000 [d51837a1b9] Corey Farrell + + * CLI: Address multiple issues. + + * listen uses the variable `s` for the result from ast_poll() then + overwrites it with the result of accept(). Create a separate variable + poll_result to avoid confusion since ast_poll does not return a file + descriptor. + * Resolve fd leak that would occur if setsockopt failed in listen. + * Reserve an extra byte while processing completion results from remote + daemon. This fixes a bug where completion processing used strstr() on + a string that was not '\0' terminated. This was no risk to the Asterisk + daemon, the bug was only reachable the remote console process. + * Resolve leak in handle_showchan when the channel is not found. + * Multiple leaks and a deadlock in pbx_config CLI completion. + * Fix leaks in "manager show command". + + Change-Id: I8f633ceb1714867ae30ef4e421858f77c14485a9 + +2017-12-18 22:48 +0000 [b8f54f742f] Corey Farrell + + * dns_core: Protect against array index violation. + + Add a check to allocate_dns_record to prevent calling a pointer + retrieved from beyond dns_alloc_table. + + ASTERISK-27495 #close + + Change-Id: Ie2f6e4991cea46baa12e837bd64cc22b44d322bb + +2017-12-18 18:59 +0000 [3c037ef972] Corey Farrell + + * chan_sip: Fix memory leaks. + + In change_redirecting_information variables we use ast_strlen_zero to + see if a value should be saved. In the case where the value is not NULL + but is a zero length string we leaked. + + handle_response_subscribe leaked a reference to the ccss monitor + instance. + + Change-Id: Ib11444de69c3d5b2360a88ba2feb54d2c2e9f05f + +2017-12-16 07:51 +0000 [3b99a0332c] Ivan Poddubny + + * bridge: Stop music on hold on adding an arbitrary channel to a bridge + + When a channel that is on hold gets added to a bridge by + the Bridge AMI action or the dialplan application of the same name, + music continues to play, causing "robotic sound". + + This commit adds a call to ast_moh_stop to stop the music. + Also, it makes the AMI Park action use the right MOH class when the + channel gets parked. + + Reported by: Zane Conkle + + ASTERISK-25079 #close + + Change-Id: I4b129c5a20c15e63968842460ac5a1a85903cf9f + +2017-12-18 15:36 +0000 [b3e839debd] Corey Farrell + + * Remove constant conditionals (dead-code). + + Some variables are set and never changed, making them constant. This + means that code in the 'false' block of the conditional is unreachable. + + In chan_skinny and res_config_ldap I used preprocessor directive `#if 0` + as I'm unsure if the unreachable code could be enabled in the future. + + Change-Id: I62e2aac353d739fb3c983cf768933120f5fba059 + +2017-12-19 02:50 +0000 [c02e256407] Oron Peled + + * chan_console: Use correct parameter for 'set active' + + chan_console supports multiple devices but the CLI only works on a + single device. 'console set active' selects this device. + + Sadly that CLI picks the wrong command-line parameter and will only + work for a device called 'active'. + + ASTERISK-27490 #close + + Change-Id: I2f0e5fe63db19845bee862575b739360797dc73d + +2017-12-18 23:17 +0000 [bf33a09c37] Corey Farrell + + * core: Fix multiple trivial issues in the core. + + * Fix small leaks in from error conditions in sdp.c and translate.c. + * Check new file descriptor is less than 0, not less than or equal. + + Change-Id: Id7782775486175c739e0c4bf3ea5e17e3f452a99 + +2017-12-18 06:14 +0000 [81474dfb23] Aaron An + + * res_rtp_asterisk: Avoid close the rtp/rtcp fd twice. + + When RTCP-MUX enabled. rtp->s is the same as rtcp->s, check this before + close the file descriptor. Close the FD twice will hangs the asterisk + under heavy load. + + ASTERISK-27299 #close + Reported-by: Aaron An + Tested-by: AaronAn + + Change-Id: I870a072d73fd207463ac116ef97100addbc0820a + +2017-12-18 19:47 +0000 [8dfc973d64] Corey Farrell + + * main/app: Fix leaks. + + * ast_linear_stream would leak a file descriptor if it failed to allocate + lin. + * ast_control_tone leaked zone and ts if ast_playtones_start failed. + + Additionally added whitespace to ast_linear_stream, pulled assignments + out of conditionals for improved readability. + + Change-Id: I6d1a10cf9161b1529d939b9b2d63ea36d395b657 + +2017-12-18 19:19 +0000 [a790ced2e8] Corey Farrell + + * func_callerid: Initialize app argument structures. + + This module uses AST_DEFINE_APP_ARGS_TYPE to define struct's instead of + directly using AST_DECLARE_APP_ARGS. Initialize the variables declared + in this way. + + Change-Id: If97fbdd8d63a204e2efd498a192effc14e90fb31 + +2017-08-11 17:02 +0000 [4c04e13783] Richard Mudgett + + * bridge_softmix.c: Change remove_destination_streams() return meaning. + + The return value of remove_destination_streams() now means we removed a + stream from the topology by making it a dead stream. Now we won't try to + request a topology change if we didn't remove any streams. + + Change-Id: Icd91571d856a1d04299a24c411e325c1d9d5c61d + +2017-08-11 16:57 +0000 [ea4179599f] Richard Mudgett + + * bridge_softmix.c: Don't match dead streams. + + * Made is_video_source() and is_video_dest() not match dead streams. + + * Optimized is_video_dest() to reduce duplicated code. + + Change-Id: I4e7ab762c7ee98395e78e6516399f57a2609b9a1 + +2017-12-18 18:40 +0000 [91d9eae79b] Corey Farrell + + * bridge_softmix: Fix memory leaks. + + Change-Id: Ifaf3e93b398595d21d07f535330fef77ff15a80c + +2015-11-11 17:20 +0000 [f6393b59af] Richard Mudgett + + * ast_json_pack(): Use safer json ref mechanism. + + Change-Id: I49204db2e57ae96eee43909c18ed007c09ac817e + +2017-12-18 18:04 +0000 [dc04d1ec93] Corey Farrell + + * app_voicemail: Fix memory management issues. + + * mwi_sub_event_cb: mwist leaked on separate_mailbox failure. + * add_email_attachment: A reference to sox_gain_tmpdir was used + after the storage was out of scope. + + Change-Id: I6282c542ff7b82fa091177a912d11234a8b00a30 + +2015-11-11 16:52 +0000 [7054fb8756] Richard Mudgett + + * rtp_engine.c: Eliminate rtcp_report_to_json() RAII_VAR usage. + + Change-Id: I58a22c2ca82e91d7537409b7b3af2d735827a54d + +2017-12-06 20:35 +0000 [5335ad117d] Rodrigo Ramírez Norambuena + + * app_queue: Add feature to set wrapuptime on the queue member + + This patch adds the ability to set the wrapuptime on the queue member + config. + + When the option is set the wrapuptime on the queue member is used instead + of the queue's wrapuptime. + + ASTERISK-27483 #close + + Change-Id: I11c85809537f974eb44dc5bbf82bcedd8a458902 + +2017-12-18 14:00 +0000 [064c74e4af] Corey Farrell + + * netsock: Remove from Asterisk core. + + This moves netsock.c / netsock.h to the chan_iax2 module. netsock.h has + been marked deprecated since 13.0.0, chan_iax2 is the only remaining + user. + + Change-Id: I28c6578043bac18de5ea608e136acec4f83d5dd3 + +2017-12-18 12:23 +0000 [731a23fba7] Corey Farrell + + * CLI: Fix 'core set debug channel' completion bug. + + The completion generator is missing a return so typing "core set debug + all off " causes the command to actually execute. + + Change-Id: Ibf6462088a74eee66967732b50445783ebefc20b + +2017-12-18 08:25 +0000 [1769d4a5c6] Joshua Colp + + * confbridge: Clarify mute sound documentation. + + The mute/unmute sounds are only played when the + action is initiated using the DTMF menu. + + ASTERISK-24756 + + Change-Id: I55b3dd5bc166096bf5e2f547ddd0ce355f36e3dc + +2017-12-18 06:36 +0000 [b40c00c97b] Joshua Colp + + * app_transfer: Remove LOCAL from documentation. + + The Local channel has never supported app_transfer + from what I can see so remove it from the documentation. + + ASTERISK-25649 + + Change-Id: Icbcfe297f6f866285a26b3e9fd5c6d00fa22e0e9 + +2017-12-15 19:01 +0000 [4a461bcde4] Richard Mudgett + + * chan_pjsip.c: Improve ast_request() diagnostic msgs. + + Attempting to dial PJSIP/endpoint when the endpoint doesn't exist and + disable_multi_domain=no results in a misleading empty endpoint name + message. The message should say the endpoint was not found. + + * Added missing endpoint not found message. + + * Added more information to the empty endpoint name msgs if available. + + * Eliminated RAII_VAR in request(). + + Change-Id: I21da85ebd62dcc32115b2ffcb5157416ebae51e4 + +2016-10-06 01:29 +0000 [6f8b34f9c1] Corey Farrell + + * chan_sip: Add security event for calls to invalid extension. + + Log a message to security events when an INVITE is received to an + invalid extension. + + ASTERISK-25869 #close + + Change-Id: I0da40cd7c2206c825c2f0d4e172275df331fcc8f + +2017-12-15 10:26 +0000 [e6768c0f81] Corey Farrell + + * cdr: Minor optimizations. + + * bridge_candidate_process: remove SCOPED_AO2LOCK and return value. + * handle_standard_bridge_enter_message: replace recursive call with goto + statement. + + ASTERISK-24297 + + Change-Id: Id2eaa0822fb8dc799f63422bb3aa89de9d4ee2a2 + +2017-12-12 12:55 +0000 [bf2d35931d] Corey Farrell + + * aco: Minimize use of regex. + + Remove nearly all use of regex from ACO users. Still remaining: + * app_confbridge has a legitamate use of option name regex. + * ast_sorcery_object_fields_register is implemented with regex, all + callers use simple prefix based regex. I haven't decided the best + way to fix this in both 13/15 and master. + + Change-Id: Ib5ed478218d8a661ace4d2eaaea98b59a897974b + +2017-12-12 12:36 +0000 [a455e18320] Corey Farrell + + * aco: Create ways to minimize use of regex. + + ACO uses regex in many situations where it is completely unneeded. In + some cases this doubles the total processing performed by + aco_process_config. + + * Create ACO_IGNORE category type for use in place of skip_category + regex source string. + * Create additional aco_category_op values to allow specifying category + filter using either a single plain string or a NULL terminated array + of plain strings. + * Create ACO_PREFIX to allow matching option names to case insensitive + prefixes. + + Change-Id: I66a920dcd8e2b0301f73f968016440a985e72821 + +2017-12-15 07:56 +0000 [03c25a869f] Corey Farrell + + * res_smdi: Fix shutdown ref. + + When adding shutdown refs for OPTIONAL_API components I accidentally + added it to the unload_module function in res_smdi. Move it to + load_module. + + Change-Id: I2b9da38fbc11ef78ea23dbb2df92b684be7f647c + +2017-12-11 17:07 +0000 [9d5797616c] Corey Farrell + + * loader: Use vector to build apha sorted module lists. + + Change-Id: I9c519f4dec3cda98b2f34d314255a31d49a6a467 + +2017-11-21 00:28 +0000 [7b54903313] Corey Farrell + + * loader: Replace priority heap with vector. + + This is needed for future changes which will require being able to + process the load priority out of order. + + Change-Id: Ia23421197f09789940510b03ebbbf3bf24d51bea + +2017-12-14 18:55 +0000 [9755eff46f] Sean Bright + + * res_hep: hepv3_is_loaded() should check if we are enabled + + res_hep_pjsip.so and res_hep_rtcp.so will still load and do a lot of + unnecessary work even if 'enabled' is set to 'no' in hep.conf. + + Change-Id: I3eddfeea09c6b5bc7c641952ee0ae487fd09b64b + +2017-11-20 23:10 +0000 [3505cc88e8] Corey Farrell + + * loader: Rework of load_dynamic_module. + + * Split off load_dlopen to perform actual dlopen, check results and log + warnings when needed. + * Always use RTLD_NOW. + * Use flags which minimize number of calls to dlopen required. First + attempt always uses RTLD_GLOBAL when global_symbols_only is enabled, + RTLD_LOCAL when it is not. + + This patch significantly reduces the number of dlopen's performed. With + 299 modules my system ran dlopen 857 times before this patch, 655 times + after this patch. + + Change-Id: Ib2c9903cfddcc01aed3e01c1e7fe4a3fb9af0f8b + +2017-11-21 20:34 +0000 [80bf0ee99a] Corey Farrell + + * loader: Minor fix to module registration. + + This protects the module loader itself against crashing if dlopen is + called on a module from outside loader.c. + + * Expand scope of lock inside ast_module_register to include reading of + resource_being_loaded. + * NULL check resource_being_loaded. + * Set resource_being_loaded NULL as soon as dlopen returns. This fixes + some error paths where it was not NULL'ed. + * Create module_destroy function to deduplicate code from + ast_module_unregister and modules_shutdown. + * Resolve leak that occured if a module did not successfully register. + * Simplify checking for successful registration. + + Change-Id: I40f07a315e55b92df4fc7faf525ed6d4f396e7d2 + +2017-12-14 15:27 +0000 [a8aa209901] Corey Farrell + + * res_clialiases: Fix completion pass-through. + + Never ignore contents of line when generating completion options. + + Change-Id: I74389efdfea154019d3b56a9f381610614c044c8 + +2017-12-11 18:20 +0000 [98f7e9251f] Richard Mudgett + + * res_rtp_asterisk.c: Disable packet flood detection for video streams. + + We should not do flood detection on video RTP streams. Video RTP streams + are very bursty by nature. They send out a burst of packets to update the + video frame then wait for the next video frame update. Really only audio + streams can be checked for flooding. The others are either bursty or + don't have a set rate. + + * Added code to selectively disable packet flood detection for video RTP + streams. + + ASTERISK-27440 + + Change-Id: I78031491a6e75c2d4b1e9c2462dc498fe9880a70 + +2017-12-14 14:05 +0000 [283d2df680] George Joseph + + * res_pjsip_sdp_rtp: Add NULL check in add_crypto_to_stream + + add_crypto_to_stream wasn't checking for a NULL + session->inv_session->neg before calling pjmedia_sdp_neg_get_state. + This was causing a crash if the negotiation hadn't already been + completed and asterisk was compiled with --enable-dev-mode. + + Change-Id: I57c6229954a38145da9810fc18657bfcc4d9d0c9 + +2017-12-14 12:14 +0000 [c387beb456] Sean Bright + + * res_musiconhold: Start playlist after initial announcement + + Reset the samples counter to zero when we are done playing an + announcement so that we don't skip into the middle of the first file in + the playlist. + + Also add the selected annoucement to the output of 'moh show classes.' + + ASTERISK-24329 #close + Reported by: Thomas Frederiksen + + Change-Id: I2a5f986a31279c981592f49391409ebf38d6f6d0 + +2017-12-14 10:51 +0000 [7a8a187a56] Sean Bright + + * coverity: Fix warnings in res_smdi + + ASTERISK-19657 #close + Reported by: Matt Jordan III, Esq. + + Change-Id: I59a5e6ef3e7d9e848bec1f4b40cb73321bc7956a + +2017-12-14 10:22 +0000 [dac5e3a0df] Sean Bright + + * configs: Comment out and change IP of iax.conf [demo] + + This no longer appears to exist, so no sense in causing confusion. + + ASTERISK-27175 #close + Reported by: Tzafrir Cohen + + Change-Id: Idde967924c69f6a741dc9a5ab7dacb44d22cf100 + +2017-12-13 14:26 +0000 [a51bfe5a79] George Joseph + + * README: Remove outdated references to tex docs + + Added links to the wiki to replace references to outdated + tex docs. + + ASTERISK-27430 + Reported by: Corey Farrell + + Change-Id: I5007e732b30bc7b63d124c530ae8857c89991209 + +2017-12-13 09:50 +0000 [5f6a3c4399] Corey Farrell + + * CLI: Remove special handling of 'core set verbose' from rasterisk. + + rasterisk does not need to handle setting verbose levels locally, it + should just tell the daemon what it wants and print what it is given. + Just max out the verbose level on the local client so all filtering + happens on the daemon. + + ASTERISK-20281 #close + + Change-Id: Ia305f75f1fc424a9169bfa30ef70d626ace2c8a8 + +2017-12-08 06:48 +0000 [daa3a3009a] sungtae kim + + * Add new AMI action for app_voicemail + + Currently, to figure out specified voicemail's status, there's only one + way to do it, which is use a VoicemailUserEntry AMI message. + But it consumed it too much resource(it check everything). + So, added new AMI action. + + ASTERISK-27470 + + Change-Id: Ie4eba1424a142e5fbd1d9fb1821a3fc1a1e238b7 + +2017-11-30 10:12 +0000 [62f2860c39] Joshua Colp + + * AST-2017-012: Place single RTCP report block at beginning of report. + + When the RTCP code was transitioned over to Stasis a code change + was made to keep track of how many reports are present. This count + controlled where report blocks were placed in the RTCP report. + + If a compound RTCP packet was received this logic would incorrectly + place a report block in the wrong location resulting in a write + to an invalid location. + + This change removes this counting logic and always places the report + block at the first position. If in the future multiple reports are + supported the logic can be extended but for now keeping a count + serves no purpose. + + ASTERISK-27382 + ASTERISK-27429 + + Change-Id: Iad6c8a9985c4b608ef493e19c421211615485116 + +2017-12-13 06:54 +0000 [3370cd21df] Joshua Colp + + * res_pjsip_session: Reinvite using active stream topology if none requested. + + When a connected line update is sent to an endpoint we do not request + a specific stream topology to be used. Previously this resulted in the + configured stream topology being used which may actually differ from the + currently negotiated topology. PJSIP is helpful in this regard in that + it will fill in any missing streams with removed ones. This results in + our own state not matching the SDP, though, and we do not apply the + negotiated SDP. + + This change tweaks the code to use the actively negotiated stream + topology if it is present with a fallback to the configured one. This + results in the SDP and the state having matching information and the + world is happy. + + ASTERISK*27397 + + Change-Id: I7a57117f0183479e6884b7bf3a53bb8c7464f604 + +2017-12-06 08:24 +0000 [0b532367bd] Joshua Colp + + * pjsip: Ignore state changes from old transactions. + + When we fail over to a new target we create a new transaction + and it becomes the current INVITE transaction. This does not + prevent the previous transaction from raising state changes + and causing the session to be prematurely disconnected if a + transport error occurs immediately. + + This change backports a fix from PJSIP that eliminates the + incorrect state change and reduces when they would be raised + in the first place. + + ASTERISK-27408 + + Change-Id: Id22d087591782eee31311753d11e7eca4b95ef34 + +2017-12-12 22:42 +0000 [cb249b2419] Yasuhiko Kamata + + * chan_sip: 3PCC patch for AMI "SIPnotify" + + A patch for sending in-dialog SIP NOTIFY message + with "SIPnotify" AMI action. + + ASTERISK-27461 + + Change-Id: I5797ded4752acd966db6b13971284db684cc5ab4 + +2017-12-12 15:38 +0000 [c7f94e570e] Ivan Poddubny + + * app_queue: Fix extension state subscriptions removed on dialplan reload + + The approach with having a single global subscription to all extension + state changes has one issue: dynamically created hints don't have any + watchers and are therefore garbage collected on the first dialplan + reload. + + This change creates a state subscription for every queue member with a + hint as state_interface, thus increasing the count of watches for + hints, so they are not destroyed prematurely anymore. + + There are 2 side effects: + 1. The state change callback in app_queue is not executed when + there are no members referring to the extension. + 2. The callback is called multiple times for the same hint if it's + associated with more than one queue member. + + Reported by: Steven T. Wheeler + + ASTERISK-18411 #close + + Change-Id: I4956af2136ea2a7f110ac9272eae5f6e676d8f89 + +2017-12-12 15:28 +0000 [0c9cc7e975] Sean Bright + + * chan_sip: Don't send trailing \0 on keep alive packets + + This is a partial fix for ASTERISK~25817 but does not address the + comments regarding RFC 5626. + + Change-Id: I227e2d10c0035bbfa1c6e46ae2318fd1122d8420 + +2017-12-12 15:19 +0000 [5039b5741c] Dwayne Hubbard + + * chan_sip: Don't crash in Dial on invalid destination + + Stripping the DNID in a SIP dial string can result in attempting to call + the argument parsing macros on an empty string, causing a crash. + + ASTERISK-26131 #close + Reported by: Dwayne Hubbard + Patches: + dw-asterisk-master-dnid-crash.patch (license #6257) patch + uploaded by Dwayne Hubbard + + Change-Id: Ib84c1f740a9ec0539d582b09d847fc85ddca1c5e + +2017-12-12 15:16 +0000 [6a67828b46] Corey Farrell + + * menuselect: Tweak check for recently run configure. + + Recently menuselect has randomly produced an error stating that + configure was just run and make had to be restarted. I believe this is + due to an incorrect menuselect/Makefile rule. The original rule + produced an error if makeopts or autoconfig.h were older than + makeopts.in or autoconfig.h.in. I believe this can create an issue if + makeopts is older than autoconfig.h.in or if autoconfig.h is older than + makeopts.in. The new rules compare files independently. + + Change-Id: Ibca155035fa1392c95e33cbf25f257902abba17b + +2017-12-07 17:51 +0000 [22810fc635] Richard Mudgett + + * chan_pjsip/res_pjsip: Add CHANNEL(pjsip,request_uri) + + This patch does three things associated with the initial incoming INVITE + request URI. + + 1) Add access to the full initial incoming INVITE request URI. + + 2) We were not setting DNID on incoming PJSIP channels. The DNID is the + user portion of the initial incoming INVITE Request-URI. The value is + accessed by reading CALLERID(dnid). + + 3) Fix CHANNEL(pjsip,target_uri) documentation. + + * The initial incoming INVITE request URI is now available using + CHANNEL(pjsip,request_uri). + + * Set the DNID on PJSIP channel creation so CALLERID(dnid) can return the + initial incoming INVITE request URI user portion. + + * CHANNEL(pjsip,target_uri) now correctly documents that the target URI is + the contact URI. + + * Refactored print_escaped_uri() out of channel_read_pjsip() to handle + pjsip_uri_print() error condition when the buffer is too small. + + ASTERISK-27478 + + Change-Id: I512e60d1f162395c946451becb37af3333337b33 + +2017-12-12 09:28 +0000 [ec1f4bf48d] Sean Bright + + * res_pjsip: Add TLSv1.1 and TLSv1.2 support + + Support for these protocols was added in the same commit as the 'proto' + field, so we can safely use the same ./configure check. + + For reference: https://trac.pjsip.org/repos/changeset/4968 + + Change-Id: Icf4975d785d6bfb8f30ac7ffa695a0adf9382dac + +2017-12-12 08:06 +0000 [0b9d2135a9] Sean Bright + + * res_pjsip: Assign support levels to a few modules + + Change-Id: I51f6945c4023cb93fc7b87be5ab4c50e9e6ee27d + +2017-12-09 00:35 +0000 [c01ba7437e] Corey Farrell + + * CLI: Fix 'core show sysinfo' function ordering. + + Handle CLI initialization before any processing occurs. + + Change-Id: I598b911d2e409214bbdfd0ba0882be1d602d221c + +2017-12-11 15:27 +0000 [b088cddc03] Kevin Harwell + + * pjsip_options: wrongly applied "UNKNOWN" status + + A couple of places were setting the status to "UNKNOWN" when qualifies were + being disabled. Instead this should be set to the "CREATED" status that + represents when a contact is given (uri available), but the qualify frequency + is set to zero so we don't know the status. + + This patch updates the relevant places with "CREATED". It also updates the + "CREATED" status description (value shown in CLI/AMI/ARI output) to a value + of "NonQualified"/"NonQual" as this description is hopefully less confusing. + + ASTERISK-27467 + + Change-Id: Id67509d25df92a72eb3683720ad2a95a27b50c89 + +2017-12-08 12:04 +0000 [c2ec82bf36] Richard Mudgett + + * stasis_channels.c: Don't set channel snapshot caller_dnid twice. + + Change-Id: Ib8d45bbdfbda81e65045f6dff874d189b74e5471 + +2017-12-11 09:45 +0000 [00578fae0a] Sean Bright + + * codec_opus: Make libcurl a dependency in menuselect + + ASTERISK-27475 #close + + Change-Id: If7384bc6ed002ef140dec69798d14c52b7cfd800 + +2017-12-08 12:48 +0000 [521f741b04] Sean Bright + + * pjsip: Improve CLI completion performance + + Use the new ast_cli_completion_add() function to improve completion + performance for commands like 'pjsip show endpoint.' + + Change-Id: I76d802294d2ac1766110dc75f7d117c8541ce348 + +2017-12-07 14:19 +0000 [9a9edc6c9e] Sean Bright + + * astdb: Improve prefix searches in astdb + + Using the LIKE operator requires a full table scan of 'astdb', whereas a + comparison operation is able to use the primary key index. + + This patch adds a new function to the AstDB API for quick prefix matches + and updates res_sorcery_astdb to utilize it. This showed substantial + performance improvement in my test environment. + + Related to ASTERISK~26806, but does not completely resolve it. + + Change-Id: I7d37f9ba2aea139dabf2ca72d31fbe34bd9b2fa1 + +2017-12-08 18:19 +0000 [d2e87b8e14] Corey Farrell + + * loader: Refactor resource_name_match. + + Optimize resource_name_match. This change eliminates use of + ast_strdupa, instead verifying that both basename's are the same length, + then using strncasecmp. + + Change-Id: I477275c0e954c99d74be5abfc8bb6545b04e5a3d + +2017-12-08 14:58 +0000 [dbb376f166] Sean Bright + + * pjsip_configuration: Add correct file header + + Change-Id: I25348c386a222bb704aff07f54375108a6402906 + +2017-12-07 09:52 +0000 [2ffe52a116] Sean Bright + + * utils: Add convenience function for setting fd flags + + There are many places in the code base where we ignore the return value + of fcntl() when getting/setting file descriptior flags. This patch + introduces a convenience function that allows setting or clearing file + descriptor flags and will also log an error on failure for later + analysis. + + Change-Id: I8b81901e1b1bd537ca632567cdb408931c6eded7 + +2017-12-07 19:33 +0000 [e2dbc26376] Corey Farrell + + * res_stasis and res_speech: Fix load order. + + res_stasis was missing AST_MODFLAG_LOAD_ORDER. Set res_stasis and + res_speech to start at (AST_MODPRI_APP_DEPEND - 1) so they are ready for + dependent modules. + + Change-Id: I27f4f3810a95b6be8a5bfbf62be2ace6bfab6ff3 + +2017-12-07 18:22 +0000 [0e4d31eb9c] Kevin Harwell + + * pjsip_options: contacts sometimes not being updated on reload + + For both dynamic and static contacts it was possible that potential AOR + changes were not being applied to all contacts. This was because the qualify + and schedule code was only retrieving AOR's, and contacts with frequencies + greater than zero. + + For instance the following could happen: and AOR/contact has a frequency of 5, + it then gets set to 0, and then a reload occurs. All scheduled OPTIONS are + stopped, a list of AOR's is retrieved with frequency > 0, but none are + selected since in this scenario all are 0. The contact for the one previously + set to 5 though does not get updated, so it's status remains "AVAILABLE". + + This patch makes it so all contacts (static and dynamic) are selected, and + appropriately updated if need be. + + ASTERISK-27467 #close + + Change-Id: I7a920170f89c683af9505d4723a44fc6841decdb + +2017-12-07 18:18 +0000 [bd2218ce63] Kevin Harwell + + * pjsip_options: dynamic contact's fields not updated on reload + + Dynamic contacts were not being properly updated on reload. As a matter of + fact any changes to the AOR that a dynamic contact was associated with were + not being applied. + + On reload, this patch makes it so for each dynamic contact, the associated + AOR is now retrieved and the AOR's fields are applied to the contact. + + ASTERISK-27467 + + Change-Id: I8e3165dc6a745218c1c9db837f77fafa0516985d + +2017-12-06 23:35 +0000 [c2c9995830] Corey Farrell + + * translate: Skip matrix_rebuild during shutdown. + + Change-Id: I1e5eef4029cba56e33d786c5a5ade8091e531a1e + +2017-12-06 14:49 +0000 [ab191e9782] Corey Farrell + + * sounds_index: Avoid repeatedly reindexing. + + The sounds index is rebuilt each time a format is registered or + unregistered. This causes the index to be repeatedly rebuilt during + startup and shutdown. + + This patch significantly reduces the work done by delaying sound index + initialization until after modules are loaded. This way a reindex only + occurs if a format module is loaded after startup. We also skip + reindexing when format modules are unloaded during shutdown. + + Change-Id: I585fd6ee04200612ab1490dc804f76805f89cf0a + +2017-12-05 18:04 +0000 [3078b7adc2] Richard Mudgett + + * CDR: Fix deadlock setting some CDR values. + + Setting channel variables with the AMI Originate action caused a deadlock + when you set CDR(amaflags) or CDR(accountcode). This path has the channel + locked when the CDR function is called. The CDR function then + synchronously passes the job to a stasis thread. The stasis handling + function then attempts to lock the channel. Deadlock results. + + * Avoid deadlock by making the CDR function handle setting amaflags and + accountcode directly on the channel rather than passing it off to the CDR + processing code under a stasis thread to do it. + + * Made the CHANNEL function and the CDR function process amaflags the same + way. + + * Fixed referencing the wrong message type in cdr_prop_write(). + + ASTERISK-27460 + + Change-Id: I5eacb47586bc0b8f8ff76a19bd92d1dc38b75e8f + +2017-12-06 12:42 +0000 [2af59ebb3a] Corey Farrell + + * media_index: Improve startup. + + This eliminates some wasteful operations in media_index startup. + + * Replace statically set string-fields with char[0]. + * Eliminate pointless RAII_VAR's. + * alloc_variant: Avoid pointless ao2_find on new info->variant. + * Stop trying find_variant before alloc_variant. + * process_media_file: replace ast_str with ast_asprintf. This avoids + reallocation of file_id_str. + + Overall sounds_index.c is about 27% of Asterisk startup time when using + sample configs. This patch reduces it to 20%. This is a half-fix. The + real problem is that the media_index is regenerated repeatedly - 68 + times in my test. + + Change-Id: Ia50b752f8efb356f852b05c4be495a6631af8652 + +2017-12-06 07:36 +0000 [e97e41552e] Richard Mudgett + + * bridge_basic.c: Update transfer diagnostic messages addendum. + + * Added start DTMF transfer verbose messages. + * Made associated transfer messages use a similar message format. + * Adjusted message verbose level as requested by initial reporter. + + ASTERISK-27449 + + Change-Id: I2045714586414b3c5ef1f3cc56c1c4af4b31f551 + +2017-11-29 06:21 +0000 [9d00583164] Niklas Larsson + + * bridge_basic.c: Update transfer diagnostic messages. + + * Add the channel name to diagnostic messages so you will know which + channel failed to transfer. + + * Promoted some debug messages to verbose 4 messages. + + ASTERISK-27449 #close + + Change-Id: Idac66b7628c99379cc9269158377fd87dc97a880 + +2017-12-01 13:54 +0000 [8536a09b86] Richard Mudgett + + * security-events: Fix SuccessfulAuth using_password declaration. + + The SuccessfulAuth using_password field was declared as a pointer to a + uint32_t when the field was later read as a uint32_t value. This resulted + in unnecessary casts and a non-portable field value reinterpret in + main/security_events.c:add_json_object(). i.e., It would work on a 32 bit + architecture but not on a 64 bit big endian architecture. + + Change-Id: Ia08bc797613a62f07e5473425f9ccd8d77c80935 + +2017-11-30 12:50 +0000 [ab63448fa6] Richard Mudgett + + * res_rtp_asterisk.c: Increase strictrtp learning timeout time. + + More complicated direct media reinvite negotiations can result in longer + delays before direct media flows. The strictrtp learning timeout time + was too short. One log showed that the first RTP packet came in just + after three seconds. + + * Increase the strictrtp learning timeout time from 1.5 to 5 seconds. + + ASTERISK-27453 + + Change-Id: Ic5e711164cbb91b4d1c1e40c83697755640f138c + +2017-12-04 08:33 +0000 [e0354bbe82] Alexander Traud + + * res_rtp_asterisk: Correct default in sample configuration file. + + With Asterisk 12 (commit 866d968), the default of "icesupport" changed to + - "yes" in the module "res_rtp_asterisk" and + - "no" in the module "chan_sip". + The latter was reflected in the sample configuration file for "sip.conf". The + former did not make it into "rtp.conf.sample". + + ASTERISK-20643 + + Change-Id: I2a2e0a900455d0767a99ea576e30adc6d7608a36 + +2017-12-04 05:27 +0000 [b2c4e8660a] Alexander Traud + + * chan_sip: Peers with distinct source ports don't match, regardless of transport. + + Previously, peers connected via TCP (or TLS) were matched by ignoring their + source port. One cannot say anything when protocol:IP:port match, yes (see + ). However, when the ports do not match, the + peers do not match as well. + + This change allows two peers connected to an Asterisk server via TCP (or TLS) + behind a NAT (= same source IP address) to be differentiated via their port as + well. + + ASTERISK-27457 + Reported by: Stephane Chazelas + + Change-Id: Id190428bf1d931f2dbfd4b293f53ff8f20d98efa + +2017-12-04 03:40 +0000 [0611fe581c] Sungtae Kim + + * Add new object for VoicemailUserEntry + + Currently, when the app_voicemail sending VoicemailUserEntry AMI event, there's + no OldMessageCount info for default. + To check the OldMessageCount info, it required IMAP_STORAGE define, but this is + not correct. + Added OldMessageCount item as a default. + + ASTERISK-27456 + + Change-Id: I5c71521c2d1daf8b7b161e31c34d28cca6aea4c7 + +2017-12-03 18:49 +0000 [e2715d2cd4] Joshua Colp + + * pjproject: Clean up disabling of WebRTC support. + + The definition in config_site.h and the argument to the + configure script are not necessary to disable WebRTC + support. The correct argument, --disable-libwebrtc, is + already passed. + + ASTERISK-26980 + + Change-Id: I27da2c894f87914956a72710222e17462d8a44bc + +2017-12-02 15:55 +0000 [39939cecfa] Corey Farrell + + * autoconf: Remove use of m4_ifblank. + + The m4_ifblank macro is not available on CentOS 6, reverse conditionals + to allow use of m4_ifval instead. ./bootstrap.sh was run but this patch + does not result in any difference to the generated configure script. + + Change-Id: I280785deb872ed8d3339d99cce63a2b54d5f1438 + +2017-11-30 14:38 +0000 [075faac2fd] George Joseph + + * AST-2017-013: chan_skinny: Call pthread_detach when sess threads end + + chan_skinny creates a new thread for each new session. In trying + to be a good cleanup citizen, the threads are joinable and the + unload_module function does a pthread_cancel() and a pthread_join() + on any sessions that are active at that time. This has an + unintended side effect though. Since you can call pthread_join on a + thread that's already terminated, pthreads keeps the thread's + storage around until you explicitly call pthread_join (or + pthread_detach()). Since only the module_unload function was + calling pthread_join, and even then only on the ones active at the + tme, the storage for every thread/session ever created sticks + around until asterisk exits. + + * A thread can detach itself so the session_destroy() function + now calls pthread_detach() just before it frees the session + memory allocation. The module_unload function still takes care + of the ones that are still active should the module be unloaded. + + ASTERISK-27452 + Reported by: Juan Sacco + + Change-Id: I9af7268eba14bf76960566f891320f97b974e6dd + (cherry picked from commit 8f5dff543e457ee3450d21e741901609af0cd779) + +2017-12-01 10:01 +0000 [d9fdeae6a4] Sean Bright + + * config: Speed up config template lookup + + ast_category_get() has an (undocumented) implementation detail where it + tries to match the category name first by an explicit pointer comparison + and if that fails falls back to a normal match. + + When initially building an ast_config during ast_config_load, this + pointer comparison can never succeed, but we will end up iterating all + categories twice. As the number of categories using a template + increases, this dual looping becomes quite expensive. So we pass a flag + to category_get_sep() indicating if a pointer match is even possible + before trying to do so, saving us a full pass over the list of current + categories. + + In my tests, loading a file with 3 template categories and 12000 + additional categories that use those 3 templates (this file configures + 4000 PJSIP endpoints with AOR & Auth) takes 1.2 seconds. After this + change, that drops to 22ms. + + Change-Id: I59b95f288e11eb6bb34f31ce4cc772136b275e4a + +2017-12-01 08:29 +0000 [1ad0fbc80e] Sean Bright + + * config: Speed up ACO & sorcery initialization + + When starting Asterisk in the foreground, there is a perceptible delay + when loading modules that use the ACO and sorcery config frameworks. + For example, a lightly configured res_pjsip took 853ms to load on my + VM. + + I tracked down the slowness to the XPath queries used to associate the + relevant documentation with the config options. One improvement was + adding a call to xmlXPathOrderDocElems after loading an XML document. + From the libxml2 docs: + + Call this routine to speed up XPath computation on static documents. + + The second change was to remove recursive descent and wildcard + operators from the XPath queries. After these changes, res_pjsip takes + 85ms to load on my VM and there is no longer a perceptible delay when + starting Asterisk in the foreground. + + Change-Id: I45d457f1580e26bf5a2b0dab16e8e9ae46dcbd82 + +2017-12-01 06:07 +0000 [892df22ccd] Joshua Colp + + * res_http_post: Not all versions of gmime have GMIME_MAJOR_VERSION. + + This change makes the presence of the GMIME_MAJOR_VERSION + definition optional, as not all versions of gmime actually + define it. + + ASTERISK-27454 + + Change-Id: I01d99590045971ed6787899147170a5954077238 + +2017-11-30 21:24 +0000 [35a7036a0d] Corey Farrell + + * README-SERIOUSLY.bestpractices.txt: Convert to markdown + + Follow-up to conversion of README.md. + + Change-Id: I17ee7cf25bc027ece844efa2c1dfe613aff1e35b + +2017-11-17 10:38 +0000 [ce5cfc8ffb] Corey Farrell + + * autoconf: Use m4 conditionals where possible. + + Change-Id: I530c0a72f965437acef6a9a4fbfe5c487f078b65 + +2017-11-17 09:15 +0000 [87a57e8d46] Corey Farrell + + * autoconf: Fix call to AC_CONFIG_AUX_DIR. + + The `pwd` parameter to AC_CONFIG_AUX_DIR is unnecessary, the default + value is $srcdir. + + Additionally remove the AC_REVISION call. It only added a comment and + is pointless without SVN tag replacements. + + Change-Id: I99299a3217f095bddcb2edefb3b9af0ab147bc29 + +2017-11-20 16:58 +0000 [d12a2ab400] Corey Farrell + + * CLI: Remove compatibility code. + + Previous commits maintained compatibility with older remote console + clients as well as maintaining all API's. + + Remove the following compatibility code: + * ast_cli_generatornummatches. + * Remote command "_command nummatches". + * Sorting / duplicate removal by remote console. + + Change-Id: I59e6ce94fa57ae564888442049695f7e46746437 + +2017-11-26 11:47 +0000 [58115e9c21] Alexander Traud + + * translate: Transcode siren14, speex32, silk24, and silk12 via slin16. + + When a format has no pre-recorded sound files, Asterisk has to transcode between + formats. For this, Asterisk has a fixed translation table. If the pre-recorded + sound files are not available in the same sample rate, Asterisk has not only to + transcode but also to resample. + + Asterisk has pre-recorded files for SLN (8000 kHz) and SLN16 (16000 kHz). + However before this change, Asterisk did not take the sample rate into account, + because the translation paths to SLN and SLN16 got the same score/weight in the + table. Consequently, you might have got narrow-band audio with siren14, speex32, + silk24, and silk12 although those are (ultra) wide-band audio codecs. + + With this change, the distance in sample-rates is taken into account. Now on the + Command-Line interface (CLI) 'core show channels', you should see: + (slin@16000)->(slin@32000)->(speex@32000). + + ASTERISK-23735 + Reported by: Richard Kenner + + Change-Id: I9448295c1978be26f8633b6066395e7bbbe2e213 + +2017-11-26 09:44 +0000 [55c4d8e008] Richard Mudgett + + * res_ari: Fix inverted test giving wrong error message. + + The patch for ASTERISK_24560 inverted a test checking if the bridge name + is being updated to a different name. + + * Fix the test to return "Changing bridge name is not implemented" when + someone attempts to change the bridge name. + + ASTERISK-27445 + + Change-Id: I4b70bf08b0e02e016108b077ff75b345dec12fc9 + +2017-11-25 04:09 +0000 [74e7005a74] Alexander Traud + + * translate: Show sample rate for silk, speex, and slin in translation table. + + ASTERISK-24662 + + Change-Id: I3822956984292c99c48bca8e97807e498ccc0e88 + +2017-11-23 13:27 +0000 [02a9952709] Richard Mudgett + + * features.conf.sample: Clarify ActivatedBy documentation wording. + + Change-Id: Id2899331fe05d1909a862ea879742879d086bc64 + +2017-11-22 18:37 +0000 [4b1262c94b] Corey Farrell + + * Add defaultbranch to .gitreview. + + Although the default value of defaultbranch is master I'm adding it + anyways. This way when new major branches are being created the value + can be updated instead of having to remember the name of the key. + + Change-Id: I3db009217c5ae399fb84bee95076f4dbb7fa52d2 + +2017-11-22 18:43 +0000 [fcd9ba2b87] Alexander Anikin + + * add cmd connection creation on creation ooh323 call data structure + + ASTERISK-27353 #close + + Reported by: Marco Giordani + + Change-Id: I455096bd7da016b871afe09af86067c2c7c9f33f + +2017-11-22 10:42 +0000 [db21f7f2e1] Kevin Harwell + + * pjsip: 183 without To tag does not negotiate media + + If a 183 with sdp response is receive without a To tag the sdp is not + negotiated. According to RFC 3261 section 12.1.2 while a To tag is required, + the client needs to still be able to handle the missing tag case for + backwards compatibility. + + This patch, accepted by and applied to pjproject, makes it so if an incoming + 180/183 with SDP comes in without a To tag it gets appropriately handled. + + ASTERISK-27442 #close + + Change-Id: Ic9d6b01e05e8f4874eebbd7adfe05d932025d203 + +2017-11-21 06:39 +0000 [1a349d832d] Alexander Traud + + * res_rtp_asterisk: ICE server-reflexive candidates (srflx) with Dual-Stack. + + Previously, Asterisk sent srflx only when configured exclusively for IPv4. Now, + srflx is gathered and sent via SDP, even when Asterisk is enabled for + Dual Stack (IPv4+IPv6) and an IPv4 interface is available/used. + + ASTERISK-27437 + + Change-Id: Ie07d8e2bfa7b6fe06fcdc73d390a7a9a4d8c0bc1 + +2017-11-20 13:05 +0000 [8e1506154f] Corey Farrell + + * res_parking: Set load_pri more appropriately. + + res_parking had an inplicit load_pri of 0 meaning it was one of the very + first modules loaded after modules with global symbols. Set it to + AST_MODPRI_DEVSTATE_PROVIDER as it provides device state for parking + lots. + + Change-Id: I297b6fb3ff6993ec004e667b22a74f5925906259 + +2017-11-17 21:33 +0000 [90f9885f73] Corey Farrell + + * README: Convert to README.md. + + Convert the README file to markdown format, remove the old README. This + causes websites like github to display the README in a much nicer + format with live links. The raw file is still very readable from + plain text editors and terminals. + + Change-Id: I7d13131764a9a9026e5f8a6ddb245a01bbd788e7 + +2017-11-20 16:48 +0000 [b79d04f8f8] Corey Farrell + + * CLI: Finish conversion of completion handling to vectors. + + Change-Id: Ib81318f4ee52a5e73b003316e13fe9be1dd897a1 + +2017-11-07 15:34 +0000 [fbb8c0d3e4] Corey Farrell + + * CLI: Refactor cli_complete. + + * Stop using "_COMMAND NUMMATCHES" on remote consoles. Using this + command had doubled the amount of work needed from the Asterisk + daemon for each completion request. + * Fix code formatting. + * Remove static buffer used to send the command, use the same buffer + that will receive the results. + * Move sort from ast_cli_display_match_list. + + Change-Id: Ie2211b519a3d4bec45bf46e0095bdd01d384cb69 + +2017-11-07 14:13 +0000 [1cd24cd726] Corey Farrell + + * CLI: Rewrite ast_el_strtoarr to use vector's internally. + + This rewrites ast_el_strtoarr to use vector's internally, but still + return the original NULL terminated array of strings. + + Change-Id: Ibfe776cbe14f750effa9ca360930acaccc02e957 + +2017-11-07 14:47 +0000 [9c0a2110f0] Corey Farrell + + * CLI: Refactor ast_cli_display_match_list. + + * Stop estimating line count, just print until we run out of matches. + * Stop freeing entries, the caller does that anyways. + * Stop calculating / returning numoutput, it was ignored. + + Change-Id: I7f92afa8bea92241a95227587367424c8c32a5cb + +2017-11-08 23:42 +0000 [9587a61f4c] Corey Farrell + + * CLI: Create ast_cli_completion_add function. + + Some completion generators are very inefficent due to the way CLI + requests matches one at a time. ast_cli_completion_add can be called + multiple times during one invokation of a CLI generator to add all + results without having to reinitialize the search state for each match. + + Change-Id: I73d26d270bbbe1e3e6390799cfc1b639e39cceec + +2017-11-09 00:39 +0000 [a02cbc2ef3] Corey Farrell + + * CLI: Remove calls to ast_cli_generator. + + The ability to add to localized storage cannot be supported by + ast_cli_generator. The only calls to ast_cli_generator should be by + functions that need to proxy the CLI generator, for example 'cli check + permissions' or 'core show help'. + + * ast_cli_generatornummatches now retrieves the vector of matches and + reports the number of elements (not including 'best' match). + * test_substitution retrieves and iterates the vector. + + Change-Id: I8cd6b93905363cf7a33a2d2b0e2a8f8446d9f248 + +2017-11-20 09:13 +0000 [491e2eba0d] Alexander Traud + + * chan_sip: ICE contained square brackets around IPv6 addresses. + + ASTERISK-27434 + + Change-Id: Iaeed89b4fa05d94c5f0ec2d3b7cd6e93d2d5a8f7 + +2017-11-19 21:23 +0000 [10b4b5d200] Corey Farrell + + * loader: Fix comments in struct ast_module. + + Make the comments follow doxygen format, move comments to the line + before each field they describe. + + Change-Id: Ic445468398b5e88f13910f7c2f70bd15aad33a27 + +2017-11-16 17:25 +0000 [9ae805c900] Corey Farrell + + * cli: Remove silly usage of RAII_VAR. + + Change-Id: I81aacfee7cd26e4fc5eef07bca582700c2975bd7 + +2017-11-16 13:19 +0000 [89ccab95c2] Corey Farrell + + * ccss: Remove silly usage of RAII_VAR. + + Change-Id: I5ce40035e0a940e4e56f6322c1dcd47fbd509b98 + +2017-11-16 12:51 +0000 [5e99c334d1] Corey Farrell + + * app: Remove silly usage of RAII_VAR. + + Change-Id: Ideb594f7aae134974fb78d5477ba0853b97b8625 + +2017-11-16 12:19 +0000 [abdd9fa1a8] Corey Farrell + + * aoc: Remove silly usage of RAII_VAR. + + Change-Id: I07907f833b81aeb0128bc9442a2abb52679c7511 + +2017-11-16 12:55 +0000 [48e1b39b28] Corey Farrell + + * abstract_jb: Remove silly usage of RAII_VAR. + + Change-Id: I9d56175369363d1dc735504cf78a3a5577069f49 + +2017-11-20 13:08 +0000 [d6bbcec571] Corey Farrell + + * res_mwi_external_ami: Remove incorrect load priority. + + res_mwi_external_ami specified AST_MODFLAG_LOAD_ORDER but didn't set + load_pri, resulting in an actual load priority of 0. This module only + provides AMI actions so it has no reason to load early. + + Change-Id: I82987fcf10d3ea42716b2f9df915b16687fd5839 + +2017-11-20 12:54 +0000 [58fa3885cc] Corey Farrell + + * Loader: Remove unneeded load_pri declarations. + + Instead of specifying AST_MODFLAG_LOAD_ORDER with load_pri + AST_MODPRI_DEFAULT just use AST_MODFLAG_DEFAULT. + + Change-Id: I0123258eafce324249433a69df15a85cc16e509f + +2017-11-20 09:49 +0000 [7397961b02] Alexander Traud + + * BuildSystem: pjsip_evsub_set_uas_timeout was not used. + + ASTERISK-27435 + + Change-Id: Id318a7ae6d7d69b53f911d30bf3eece64852f15c + +2017-11-19 09:57 +0000 [b4f7f8250f] Corey Farrell + + * Build: Fix OSX build issues. + + OSX does not support 'readlink -f' or 'sed -r'. Replace readlink with + the GNU make macro 'realpath'. Replace sed with grep in one place, cut + in the other. + + ASTERISK-27332 + + Change-Id: I5d34ecca905384decb22ead45c913ae5e8aff748 + +2017-11-19 13:52 +0000 [999e0c17d7] Corey Farrell + + * Build: Fix issues building without SSL. + + * Fix conditional in libasteriskssl. + * Use variables produced by configure to link the SSL and uuid libraries + into libasteriskpj.so instead of hard-coding them. + + ASTERISK-27431 + + Change-Id: I3977931fd3ef8c4e4376349ccddb354eb839b58d + +2017-11-19 13:28 +0000 [53f42cc052] Corey Farrell + + * res_pjsip: Fix warning by deferring implicit type cast. + + Mac doesn't like the comparison of -1 to an enum, so store the result of + ast_sip_str_to_dtmf to an int so we can check for the negative return + value. ast_sip_str_to_dtmf returns an int so this is only delaying the + implicit type cast. + + Change-Id: I0c262c1719ee951aae1f437d733a301cf5f8ad29 + +2017-11-18 21:13 +0000 [75cb403775] Corey Farrell + + * tests: Fix warnings found on Mac. + + test_pbx used raise without explicitly including signal.h. On Mac for + some reason nothing else includes it. + + test_logger checked if an unsigned int was negative. Switch the + variable to 'int' so that error check can be effective. + + Change-Id: Ie1db5dd1818ac25cc2ae41b644f848b5865b1362 + +2017-11-18 20:25 +0000 [83a2c4d2ae] Corey Farrell + + * res_snmp: Declare RONLY if net-snmp headers do not. + + Some net-snmp builds do not provide the RONLY declare, only + NETSNMP_OLDAPI_RONLY. Map RONLY to NETSNMP_OLDAPI_RONLY to get around + this error. + + Change-Id: Ida5c7ad9406515825485c4d3b4a34fd6ad0da577 + +2017-11-18 20:02 +0000 [5a899fc503] Corey Farrell + + * res_fax: Remove checks for unsigned values being >= 0. + + It's impossible for gwtimeout or fdtimeout to be less than 0 because + they are unsigned int's. Remove checks and unreachable branches. + + Change-Id: Ib2286960621e6ee245e40013c84986143302bc78 + +2017-11-18 19:50 +0000 [b4862e463c] Corey Farrell + + * iostream: Fix ast_iostream_printf declaration. + + This adds the printf attribute and changes 'fmt' from 'const void *' to + 'const char *'. This resolves a warning from some compiler for + vsnprintf needing a literal string for format. + + Change-Id: I71c33a8262590042ee451e1146760c10bb22fb78 + +2017-11-18 19:29 +0000 [2fab3aacd6] Corey Farrell + + * app_minivm: Fix possible uninitialized return value. + + Declare 'res' initialized to -1 to deal with earlier error paths that + could cause 'res' to be returned uninitialized. + + Change-Id: I8ac2a5755bf4174d89ef893e924c940f702b104e + +2017-11-16 02:47 +0000 [0ca406c202] Pirmin Walthert + + * res_rtp_asterisk.c: Fix rtp source address learning for broken clients + + Some clients do not send rtp packets every ptime ms. This can lead to + situations in which the rtp source learning algorithm will never learn + the address of the client. This has been discovered on a Mac mini with + a pjsip based softphone after updating to Sierra: as soon as USB + headsets are involved, the softphone will send the second packet 30ms + after the first, the third 30ms after the second and the fourth 1ms + after the third. So in the old implmentation the rtp source learning + algorithm was repeatedly reset on the fourth packet. + + The patch changes the algorithm in a way that doesn't take the arrival + time between two consecutive packets into account but the time between + the first and the last packet of a learning sequence. + + The patch also fixes a second problem: when a user was using a wrong + value for the probation setting there was a LOG_WARNING output stating + that the value had been set to the default value instead. However + the code for setting the value back to defaults was missing. + + ASTERISK-27421 #close + + Change-Id: If778fe07678a6fd2041eaca7cd78267d0ef4fc6c + +2017-11-17 19:36 +0000 [9316a064fd] Corey Farrell + + * README: Send people to secure websites where available. + + We should be sending people to secure web URL's where available. + Update README's and docs. + + Change-Id: Id5b1e049b0b18b49a784f1254605aefa244ce19a + +2017-11-17 19:54 +0000 [5d0529c4d9] Corey Farrell + + * doxygen: Remove obsolete contents. + + Remove doxygen contents that have nothing to do with the current state + of Asterisk. + + Change-Id: Ic072cc8641f9533a202990ccf275ce87e3efd95c + +2017-11-17 09:57 +0000 [1b6e4c1175] Sean Bright + + * res_pjsip: Use reasonable buffer lengths for endpoint identification + + Domains themselves can be up to 255 characters long (per RFC 1035), so + our current buffer sizes are wholly inadequate for many use cases. + + Change-Id: If3f30a68307f1365a1fe06bc4b854c62842c9292 + +2017-11-11 10:09 +0000 [b9f4bb5988] Corey Farrell + + * menuselect: Remove ineffective weak attribute detection. + + menuselect detects compiler support for multiple styles of weak + functions. This is a remnant from 2013 when OPTIONAL_API required weak + functions. It is no longer correct for menuselect to switch + dependencies from optional to required based on lack of weak function + support. + + Note an issue remains - dependencies should switch from optional to + required based on OPTIONAL_API being enabled or disabled. I don't think + this is possible. menuselect needs to know at startup if OPTIONAL_API + is enabled or disabled, so the only way to fix this is to remove + OPTIONAL_API from menuselect and create a configure option. I've left + the code that switches in place but it's preprocessed out. + + Additionally removed: + - WEAKREF variable from Asterisk makeopts.in. + - Related disabled code from test_utils. + - Pointless AC_REVISION call from menuselect/configure.ac. + + Change-Id: Ifa702e5f98eb45f338b2f131a93354632a8fb389 + +2017-11-16 09:48 +0000 [c4f11911ea] Corey Farrell + + * acl: Fix allocation related issues. + + Add checks for allocation errors, cleanup and report failure when they + occur. + + * ast_duplicate_acl_list: Replace log warnings with errors, add missing + line-feed. + * ast_append_acl: Add missing line-feed to logger message. + * ast_append_ha: Avoid ast_strdupa in loop by moving debug message to + separate function. + * ast_ha_join: Use two separate calls to ast_str_append to avoid using + ast_strdupa in a loop. + + Change-Id: Ia19eaaeb0b139ff7ce7b971c7550e85c8b78ab76 + +2017-11-16 09:04 +0000 [781a520b73] Joshua Colp + + * bridge_basic: Ignore answer from transfer target when they've timed out. + + This is a fun one. + + Given the following attended transfer scenario: + + 1. Transfer target is called + 2. Transferer hangs up + 3. Transfer target call attempt reaches timeout + 4. Transfer target is told to hang up + 5. Transfer target answers before channel is hung up + 6. Transferer recall target is called + + A crash would occur. This is because the transfer target call + attempt, despite being told to hang up, would raise a recall + target answer before the recall target had been answered. As it + had not answered there would be no recall target channel and it + would implode. + + This change makes it so that if the transfer target has been + hung up we don't tell the attended transfer code that it has + answered. We also clear out the stimulus that the recall target + has been answered after telling the transfer target to hang up, + in case it was able to raise the information before we told it + to hangup. + + ASTERISK-27361 + + Change-Id: Ifb8b255a9c4d2c5c1b8ad77bf54f659ed286df99 + +2017-11-16 19:39 +0000 [a95f2994c6] Corey Farrell + + * aoc: Fix memory management issues. + + aoc_publish_blob failed to check for msg allocation error and never + released msg. + + Change-Id: Ib31a9ffb81056a0d496a49d7eec795005a44bcd5 + +2017-11-16 16:18 +0000 [7a735d45e2] Sean Bright + + * res_pjsip_transport_websocket: Give transport a meaningful description + + We were not \0 terminating this string, so any attempt to print it would + in the best case show an empty string and in the worst case potentially + crash. + + Change-Id: I63d96ef8f7516ac02a0f91e22dfa8acdc615042c + +2017-11-16 15:00 +0000 [6c53fb5d21] Sean Bright + + * res_pjsip: Use sorcery prefix operation for contact lookup + + This improves performance for registrations assuming that + res_config_astdb is not in use. + + Change-Id: I86f37aa9ef07a4fe63448cb881bbadd996834bb1 + +2017-10-19 14:44 +0000 [d995064fb7] Nir Simionovich + + * This patch adds a beanstalk CEL backend. + + Beanstalkd is a simple to use job queue. It provides a means to + create multiple job queues called "tubes". Each tube can store + multiple jobs, with varying priorities with the queue. Queue + processing is available via a simple TCP socket or via well defined + libraries, avaialble at + https://github.com/kr/beanstalkd/wiki/client-libraries + + This module is based upon the beanstalk-client library, available + for download at: https://github.com/deepfryed/beanstalk-client + + This module currently doesn't support user defined events. + + Change-Id: Ic3a087faeeac045d69a2a018e60e29831ddb95ab + +2017-11-09 19:58 +0000 [e793501084] Richard Mudgett + + * chan_pjsip.c: Improve answer failure log messages. + + * Balanced the session->inv_session refs on answer failure. + + Change-Id: I33542d639d37e692cb46550b972a5fcfc3b804b8 + +2017-11-14 18:00 +0000 [b7b800b689] Richard Mudgett + + * audiohook.c: Fix freeing a frame and still using it. + + Memory corruption happened to the media frame caches when an audio hook + freed a frame when it shouldn't. I think the freed frame was because a + jitter buffer interpolated a missing frame and the audio hook + unconditionally freed it. + + * Made audiohook.c:audio_audiohook_write_list() not free an interpolated + frame if it is the same frame as what was passed into the routine. + + * Made plc.c:normalise_history() use memmove() instead of memcpy() on a + memory block that could overlap. Found by valgrind investigating this + issue. + + ASTERISK-27238 + ASTERISK-27412 + + Change-Id: I548d86894281fc4529aefeb9f161f2131ecc6fde + +2017-11-15 12:10 +0000 [f512707362] George Joseph + + * app_record: Don't set RECORD_STATUS chan var until file is closed + + We've been calling pbx_builtin_setvar_helper to set the + RECORD_STATUS variable before actually closing the recorded file. + If a client is watching VarSet events and tries to do something with + the file when a RECORD_STATUS event is seen, they might attempt to + do so while the file it's still open. + + We now delay calling pbx_builtin_setvar_helper until after we close + the file. + + ASTERISK-27423 + + Change-Id: I7fe9de99953e46b4bafa2b38cf151fe8f6488254 + +2017-11-07 08:25 +0000 [cf1cb3345e] George Joseph + + * ast_coredumper: Add ability to use directory other than /tmp + + The OUTPUTDIR environment variable can now be set either in the + environment itself or in ast_debug_tools.conf. If set, it's used + for all work products instead of /tmp. + + Also added the --tarball-config option that includes the contents + of /etc/asterisk when either --tarball-coredumps or --tarball-results + are used. + + Change-Id: I66b2553319df61caea5b313d084f51978f730b4c + +2017-11-13 07:14 +0000 [29e0add14f] Joshua Colp + + * pjsip / hep: Provide correct local address for Websockets. + + Previously for PJSIP the local address of WebSocket connections + was set to the remote address. For logging purposes this is + not particularly useful. + + The WebSocket API has been extended to allow the local + address to be queried and this is used in PJSIP to set the + local address to the correct value. + + The PJSIP HEP support has also been tweaked so that reliable + transports always use the local address on the transport + and do not try to (wrongly) guess. As they are connection + based it is impossible for the source to be anything else. + + ASTERISK-26758 + ASTERISK-27363 + + Change-Id: Icd305fd038ad755e2682ab2786e381f6bf29e8ca + +2017-11-13 17:47 +0000 [14253f9535] Corey Farrell + + * alertpipe: Correct documented return of ast_alertpipe_write. + + Change-Id: I4ea49c441890a81384144479dc93ab5a3989486d + +2017-11-09 19:47 +0000 [edd1016dd8] Corey Farrell + + * core: Use ast_alertpipe for Asterisk signal monitoring thread. + + Reduce the signal monitoring thread file descriptor use from two to one + on systems that support eventfd. + + Change-Id: Id4041a237d481ff699639e153ea6982fee14a462 + +2017-11-13 16:20 +0000 [cdaaa14a5f] Corey Farrell + + * core: Fix configuration of remote console socket path. + + The remote console socket path is the combination of asterisk.conf + settings astrundir from [directories] and astctl from [files]. + Unconditionally combine the two strings after processing all values + to ensure we end up with the correct socket path. + + ASTERISK-27415 + + Change-Id: Ib1e2805d55d6b0955c6430a1a2a93acbf9b091e8 + +2017-11-10 10:37 +0000 [f6ebd16bb8] George Joseph + + * bundled_pjproject: sip_parser: Fix return code in pjsip_find_msg + + The default return code for pjsip_find_msg was PJ_SUCCESS so if + a Content-Length header wasn't found at all, pjsip_find_msg was + returning PJ_SUCCESS instead of PJSIP_EMISSINGHDR. + + Also added the volatile keyword to a few variables that are used + both inside and outside the PJ_TRY/PJ_CATCH block. + + Partial fix for ASTERISK_27408 + + Change-Id: If82ba9de921e3d57df9c68cf96ee45ccc1491f7a + +2017-11-13 14:35 +0000 [2e7f6cd31b] Ben Ford + + * bundled_pjproject: Update to 2.7.1 + + Update from 2.7 to 2.7.1 for bundled pjproject. Changed version + and removed patch files included in the update. + + Change-Id: I55cea8e734b318c2df9daf86aa0802c559ec8357 + +2017-11-09 08:21 +0000 [ffccce76d9] Sean Bright + + * sorcery: Add ast_sorcery_retrieve_by_prefix() + + Some consumers of the sorcery API use ast_sorcery_retrieve_by_regex + only so that they can anchor the potential match as a prefix and not + because they truly need regular expressions. + + Rather than using regular expressions for simple prefix lookups, add + a new operation - ast_sorcery_retrieve_by_prefix - that does them. + + Change-Id: I56f4e20ba1154bd52281f995c27a429a854f6a79 + +2017-11-07 17:07 +0000 [14d60cee0c] Corey Farrell + + * CLI: Create ast_cli_completion_vector. + + This is a rewrite of ast_cli_completion_matches using a vector to build + the list. The original function calls the vector version, NULL + terminates the vector and extracts the elements array. + + One change in behavior the results are now sorted and deduplicated. This + will solve bugs where some duplicate checking was done before the list + was sorted. + + Change-Id: Iede20c5b4d965fa5ec71fda136ce9425eeb69519 + +2017-11-07 14:00 +0000 [4930404715] Corey Farrell + + * vectors: Add new macro and a string vector definition. + + * AST_VECTOR_STEAL_ELEMENTS - steal the array of elements for use + with non-vector code. + * struct ast_vector_string - a vector of 'char *'. + + Change-Id: I104d1b204be03fccf67e02a195596adcb5ab1e42 + +2017-11-11 13:01 +0000 [90bb0a3e10] Richard Mudgett + + * core: Add cache_media_frames debugging option. + + The media frame cache gets in the way of finding use after free errors of + media frames. Tools like valgrind and MALLOC_DEBUG don't know when a + frame is released because it gets put into the cache instead of being + freed. + + * Added the "cache_media_frames" option to asterisk.conf. Disabling the + option helps track down media frame mismanagement when using valgrind or + MALLOC_DEBUG. The cache gets in the way of determining if the frame is + used after free and who freed it. NOTE: This option has no effect when + Asterisk is compiled with the LOW_MEMORY compile time option enabled + because the cache code does not exist. + + To disable the media frame cache simply disable the cache_media_frames + option in asterisk.conf and restart Asterisk. + + Sample asterisk.conf setting: + [options] + cache_media_frames=no + + ASTERISK-27413 + + Change-Id: I0ab2ce0f4547cccf2eb214901835c2d951b78c00 + +2017-11-11 09:42 +0000 [b865d29f1c] Richard Mudgett + + * frame.c: Make ast_frame_free()/ast_frfree() NULL tolerant + + Change-Id: Ic49d821ef88ada38a31bdd835b9531443c55d793 + +2017-11-10 22:04 +0000 [96987737b9] Corey Farrell + + * menuselect: Delete and ignore aclocal.m4. + + This file is temporary output from the bootstrap.sh command, it does not + need to be committed. + + Change-Id: Ie0fd113aff6eac44924c0bd0c900833c6c86a6d9 + +2017-10-30 22:09 +0000 [e9f8b317c3] Corey Farrell + + * Build: Make function constructor/destructor attributes mandatory. + + This change causes the configure script to fail if the C compiler does + not support both function attributes constructor and destructor. These + were already required as modules cannot function without these attributes + and Asterisk requires modules. + + This also has AST_GCC_ATTRIBUTE set a variable + ax_cv_have_func_attribute_$1. This is the same variable name used by + autoconf-archive's AX_GCC_FUNC_ATTRIBUTE, used for the same purpose. + + Change-Id: Id68e8a1447f2a6d707c54b56350e7bfdb33fb663 + +2017-11-10 07:06 +0000 [96f2ee865e] Joshua Colp + + * pjsip: Add patch to allow all transports to be destroyed. + + If a transport is created with the same transport type, source + IP address, and source port as one that already exists the old + transport is moved into a linked list called "tp_list". + + If this old transport is later shutdown it will not be destroyed + as the process checks whether the transport is valid or not. This + check does not look at the "tp_list" when making the determination + causing the transport to not be destroyed. + + This change updates the logic to query not just the main storage + method for transports but also the "tp_list". + + Upstream issue https://trac.pjsip.org/repos/ticket/2061 + + ASTERISK-27411 + + Change-Id: Ic5c2bb60226df0ef1c8851359ed8d4cd64469429 + +2017-11-09 20:34 +0000 [bb77666620] Corey Farrell + + * core: Remove disabled code. + + handle_quit has been disabled since 2003, remove it. + + Change-Id: Idc3aaa6c81676160547078f9b71e8aa43de2db18 + +2017-11-09 13:24 +0000 [23b0ef3e9b] Corey Farrell + + * Build System: Disable parallel make in the root Makefile. + + This ensures that the root Makefile runs only a single target at a time. + SUBMAKE will still honor requested parallelism, so 'make -j8' will build + one directory at a time but allow 8 jobs at once when building a sub + directory. + + This will fix some display glitches related to rebuild of XML + documentation. It will also prevent some edge case errors where + bundled pjproject needs to be rebuild before other parts of Asterisk. + + Change-Id: I4f2ec6fbbec1ada0ccb1109a28ea303524239b1e + +2017-03-29 20:46 +0000 [12010fc5c0] Richard Mudgett + + * chan_pjsip.c: Fix uninitialized cause value on failure. + + Change-Id: I3f9dd3c31bd582e54a30381500077de2319d8cc3 + +2017-11-08 01:40 +0000 [0bda39c668] Corey Farrell + + * DEBUG_FD_LEAKS: Add missing FD creators. + + This adds FD tracking for the following functions: + * eventfd + * timerfd_create + * socketpair + * accept + + ASTERISK-27404 + + Change-Id: Id6848fe904ade2d34eb39d2a20bd6b223e1111fc + +2017-11-07 11:49 +0000 [05f557820b] Corey Farrell + + * bridge_softmix: Note why ast_stream_topology_set_stream cannot fail. + + This appeared in my audit of ast_stream_topology_set_stream callers + not checking for errors but in this situation the call cannot fail. + Add comment so this can be ignored in the future. + + Change-Id: I91d25704859efbe50b8b82cfe1cd3c40ba177c9f + +2017-10-19 13:35 +0000 [dd1a914495] Kevin Harwell + + * AST-2017-011 - res_pjsip_session: session leak when a call is rejected + + A previous commit made it so when an invite session transitioned into a + disconnected state destruction of the Asterisk pjsip session object was + postponed until either a transport error occurred or the event timer + expired. However, if a call was rejected (for instance a 488) before the + session was fully established the event timer may not have been initiated, + or it was canceled without triggering either of the session finalizing states + mentioned above. + + Really the only time destruction of the session should be delayed is when a + BYE is being transacted. This is because it's possible in some cases for the + session to be disconnected, but the BYE is still transacting. + + This patch makes it so the session object always gets released (no more + memory leak) when the pjsip session is in a disconnected state. Except when + the method is a BYE. Then it waits until a transport error occurs or an event + timeout. + + ASTERISK-27345 #close + + Reported by: Corey Farrell + + Change-Id: I1e724737b758c20ac76d19d3611e3d2876ae10ed + +2017-10-03 16:19 +0000 [b358e441cd] Richard Mudgett + + * AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun + + cdr_object_update_party_b_userfield_cb() could overrun the fixed buffer if + the supplied string is too long. The long string could be supplied by + external means using the CDR(userfield) function. + + This may seem reminiscent to AST-2017-001 (ASTERISK_26897) and it is. The + earlier patch fixed the buffer overrun for Party A's userfield while this + patch fixes the same thing for Party B's userfield. + + ASTERISK-27337 + + Change-Id: I0fa767f65ecec7e676ca465306ff9e0edbf3b652 + +2017-10-19 13:53 +0000 [74432f51f9] George Joseph + + * AST-2017-009: pjproject: Add validation of numeric header values + + Parsing the numeric header fields like cseq, ttl, port, etc. all + had the potential to overflow, either causing unintended values to + be captured or, if the values were subsequently converted back to + strings, a buffer overrun. To address this, new "strto" functions + have been created that do range checking and those functions are + used wherever possible in the parser. + + * Created pjlib/include/limits.h and pjlib/include/compat/limits.h + to either include the system limits.h or define common numeric + limits if there is no system limits.h. + + * Created strto*_validate functions in sip_parser that take bounds + and on failure call the on_str_parse_error function which prints + an error message and calls PJ_THROW. + + * Updated sip_parser to validate the numeric fields. + + * Fixed an issue in sip_transport that prevented error messages + from being properly displayed. + + * Added "volatile" to some variables referenced in PJ_CATCH blocks + as the optimizer was sometimes optimizing them away. + + * Fixed length calculation in sip_transaction/create_tsx_key_2543 + to account for signed ints being 11 characters, not 9. + + ASTERISK-27319 + Reported by: Youngsung Kim at LINE Corporation + + Change-Id: I48de2e4ccf196990906304e8d7061f4ffdd772ff + +2017-11-06 17:58 +0000 [2c4db2a3d5] Corey Farrell + + * res_pjsip_pubsub: Fix multiple leaks on failure to append vectors. + + Change-Id: I68ece0073ea79667ca41eb10405f516f1d30d482 + +2017-11-06 18:12 +0000 [48e96aba6a] Corey Farrell + + * res_pjsip_history: Fix multiple leaks on vector append failure. + + Change-Id: I41e8d5183ace284095cc721f3b1fb32ade3f940f + +2017-11-06 18:01 +0000 [ecb81ae4de] Corey Farrell + + * res_pjsip_session: Fix multiple leaks. + + * Pre-initialize cloned media state vectors to final size to ensure + vector errors cannot happen later in the clone initialization. + * Release session_media on vector replace failure in + ast_sip_session_media_state_add. + * Release clone and media_state in ast_sip_session_refresh if we fail to + append to the stream topology, return an error. + + Change-Id: Ib5ffc9b198683fa7e9bf166d74d30c1334c23acb + +2017-11-07 12:03 +0000 [9b3db9a7fd] Corey Farrell + + * main/sdp_state: Check for errors from ast_stream_topology_set_stream. + + Change-Id: I84a83ae69daba5d185cc1d939b133a4c23565497 + +2017-11-06 16:37 +0000 [0cfc3cbf02] Richard Mudgett + + * res_pjsip_registrar.c: Fix AOR and pjproject group deadlock. + + One of the patches for ASTERISK_27147 introduced a deadlock regression. + When the connection oriented transport shut down, the code attempted to + remove the associated contact. However, that same transport had just + requested a registration that we hadn't responded to yet. Depending + upon timing we could deadlock. + + * Made send the REGISTER response after we completed processing the + request contacts and released the AOR lock to avoid the deadlock. + + ASTERISK-27391 + + Change-Id: I89a90f87cb7a02facbafb44c75d8845f93417364 + +2017-11-07 11:40 +0000 [eba1179795] Corey Farrell + + * res_pjsip_session: Check for errors from ast_stream_topology_set_stream. + + Free memory and return error if ast_stream_topology_set_stream fails. + + Change-Id: I9f4dbf44bed627243d2f1dd8aea2eab6c38a028d + +2017-11-07 11:34 +0000 [4ac6dd4e95] Corey Farrell + + * res_pjsip_t38: Better error checking for t38_create_media_state. + + Change-Id: I81b2587427c6982aa3e2a3f9ad69cce8d316eb10 + +2017-11-06 15:38 +0000 [fb18895108] Corey Farrell + + * stream: Return error from ast_stream_topology_set_stream. + + ast_stream_topology_set_stream had suppressed error codes from + AST_VECTOR_APPEND. The result of AST_VECTOR_APPEND needs to be returned + to the caller so they can take appropriate action on the stream. + + Change-Id: I6c0d12755743eadba1357f6153526cc055592856 + +2017-11-06 17:21 +0000 [801094da7b] Corey Farrell + + * res_stasis: Fix multiple leaks. + + * res/stasis/app.c JSON passed to app_send needs to be released. + * res/stasis_message.c: objects leak if vector append fails. + + Change-Id: I8dd5385b9f50a5cadf2b1d16efecffd6ddb4db4a + +2017-11-07 06:56 +0000 [02329b9a34] Richard Mudgett + + * res_pjproject.c: Fix ast_strdup() alloc failure. + + Change-Id: I74688038e7afe3a279359cce53aadb28ade51ead + +2017-11-05 22:06 +0000 [a36d8cc533] Aaron An + + * res_pjsip: Avoid crash when contact uri is empty string + + Asterisk will crash if contact uri is invalid, so contact_apply_handler + should check if the uri is NULL or empty. + + ASTERISK-27393 #close + Reported-by: Aaron An + Tested-by: AaronAn + + Change-Id: Ia0309bdc6b697c73c9c736e1caec910b77ca69f5 + +2017-11-06 17:55 +0000 [7ef38d399a] Corey Farrell + + * res_pjsip_outbound_registration: Fix leak on vector add failure. + + Change-Id: I774b88b3c9da41edd4dc8d78f095481f52f2bd46 + +2017-11-06 17:48 +0000 [8684219f79] Corey Farrell + + * res_pjsip_exten_state: Check for vector append failure. + + Release reference to publisher if we fail to add it to the vector. + + Change-Id: I64dff3f481b67b9884f37cadba7a5ccf23d084f3 + +2017-11-06 17:44 +0000 [f899368cd6] Corey Farrell + + * res_pjsip_config_wizard: Fix leaks and add check for malloc failure. + + wizard_apply_handler(): + - Free host if we fail to add it to the vector. + + wizard_mapped_observer(): + - Check for otw allocation failure. + - Free otw if we fail to add it to the vector. + + Change-Id: Ib5d3bcabbd9c24dd8a3c9cc692a794a5f60243ad + +2017-11-06 17:38 +0000 [4016884ef3] Corey Farrell + + * res_stasis_playback: Check for failure to append vector. + + Free resources and return error if we fail to append the vector in + stasis_app_control_play_uri. + + Change-Id: I22c4a90dd859b253f2850c6511de48b25609422b + +2017-11-06 17:33 +0000 [24b9751aaa] Corey Farrell + + * test_sorcery_memory_cache_thrash: Handle error from vector append. + + Cleanup resources when we fail to append the vector and report test + failure. + + Change-Id: I6eb41586fd11dee8c0dfe35e91cb465a4cab7298 + +2017-11-06 17:28 +0000 [29205e7adc] Corey Farrell + + * res_pjsip: Fix leak on error in ast_sip_auth_vector_init. + + Change-Id: Ib0fc7a18f3135ca8990c3984c9e15f6d26e556e8 + +2017-11-06 17:17 +0000 [70fcc043bb] Corey Farrell + + * res_pjproject: Handle error from adding to the buildopts vector. + + Change-Id: I076c7bd207c7989a23005395ce1735392657be65 + +2017-11-06 17:11 +0000 [5247ba4b88] Corey Farrell + + * res_ari_events: Fix use after free / double-free of JSON message. + + When stasis_app_message_handler needs to queue a message for a later + connection it needs to bump the message reference so it doesn't get + freed when the caller releases it's reference. + + Change-Id: I82696df8fe723b3365c15c3f7089501da8daa892 + +2017-11-06 15:33 +0000 [adb4fdcb7b] Corey Farrell + + * stasis: Release object if vector append fails. + + Change-Id: I3e5cc669169aab6175ddfaf7486edeaeb4fdcfb1 + +2017-11-06 15:20 +0000 [2f4f216026] Corey Farrell + + * RTP Engine: Deal with errors returned from AST_VECTOR_REPLACE. + + Check for errors from AST_VECTOR_REPLACE and clean memory if needed. + + Change-Id: I124d15cc1d645f85a72a1279f623c1993b304b0b + +2017-11-06 15:16 +0000 [5762f72425] Corey Farrell + + * PBX: Handle errors from AST_VECTOR_APPEND. + + This resolves potentials leaks on AST_VECTOR_APPEND error in: + * ast_context_add_include2 + * ast_context_add_switch2 + * ast_context_add_ignorepat2 + + Change-Id: Ib60e95c4f622fa3b832d87227c0523a695d736b6 + +2017-11-06 15:10 +0000 [714026b32e] Corey Farrell + + * Messaging: Report error on failure to register tech or handler. + + Message tech and handler registrations use a vector which could fail to + expand. If it does log and error and return error. + + Change-Id: I593a8de81a07fb0452e9b0efd5d4018b77bca6f4 + +2017-11-06 15:07 +0000 [e43c8af77c] Corey Farrell + + * format_cap: Fix leak on AST_VECTOR_APPEND error. + + format_cap_framed_init can fail on AST_VECTOR_APPEND. This should + report failure to the caller and clean the newly allocated frame. + + Change-Id: Ica0661235bf09497bf23d844ceb01f21b41a55b0 + +2017-11-06 14:23 +0000 [64bcb65a78] Corey Farrell + + * stasis: Remove silly use of RAII_VAR in stasis_forward_all. + + Change-Id: I46de4c968d40144d5b049966304ff66c1469fb65 + +2017-11-06 12:51 +0000 [b7e1034009] Corey Farrell + + * CLI: Remove unused internal command. + + The internal CLI command "_command complete" was last used by Asterisk + 0.2.0. Since then we've been using "_command nummatches" and "_command + matchesarray". + + Change-Id: I682fe1e21a24a3bb5bd04146e639f1c5866bcfce + +2017-11-03 18:08 +0000 [923424019b] Richard Mudgett + + * stasis_bridges.c: Fix off-nominal json memory leaks. + + Change-Id: Ib1181a36b317c86bff1ef2e44a17a0b1c73cfdc8 + +2017-11-03 17:43 +0000 [f81970d3fc] Richard Mudgett + + * stasis_channels.c: Remove a very silly RAII_VAR(). + + Change-Id: I28b458b3c1a442c4ef0be7b4986a95ea4149e14f + +2017-11-06 10:29 +0000 [36fedea8c1] Joshua Colp + + * res_pjsip_pubsub: Ensure remote URI contains URI only. + + This change makes it so that any user of the pubsub + API that requests the remote URI receives only the URI. + Previously the entire string was returned, which could + contain a display name. + + ASTERISK-27290 + + Change-Id: If1d0cd6630f0a264856d31d2a67933109187a017 + +2017-11-03 16:14 +0000 [9771f089f5] Richard Mudgett + + * stasis/app.c: Optimize stasis_app_get_debug_by_name() + + * Eliminate RAII_VAR() + * Short circuit application name lookup if global debug enabled. + + Change-Id: I5f78b7bd6ca7fd2c3b07cbbe036c6a93b4681123 + +2017-11-02 18:40 +0000 [ee08f10d06] Richard Mudgett + + * Fix ast_(v)asprintf() malloc failure usage conditions. + + When (v)asprintf() fails, the state of the allocated buffer is undefined. + The library had better not leave an allocated buffer as a result or no one + will know to free it. The most likely way it can return failure is for an + allocation failure. If the printf conversion fails then you actually have + a threading problem which is much worse because another thread modified + the parameter values. + + * Made __ast_asprintf()/__ast_vasprintf() set the returned buffer to NULL + on failure. That is much more useful than either an uninitialized pointer + or a pointer that has already been freed. Many uses won't have to check + for failure to ensure that the buffer won't be double freed or prevent an + attempt to free an uninitialized pointer. + + * stasis.c: Fixed memory leak in multi_object_blob_to_ami() allocated by + ast_asprintf(). + + * ari/resource_bridges.c:ari_bridges_play_helper(): Remove assignment to + the wrong thing which is now not needed even if assigning to the right + thing. + + Change-Id: Ib5252fb8850ecf0f78ed0ee2ca0796bda7e91c23 + +2017-11-06 08:05 +0000 [ca4e6b568f] Sean Bright + + * res_pjsip: Ignore empty TLS configuration + + When using realtime, fields that are not explicitly set by an + administrator are still presented to sorcery as empty strings. Handle + this case explicitly. + + In this particular case, if any of these fields are required for TLS + support, their existence should be validated in the 'apply' handler once + we have a complete transport definition. + + ASTERISK-27032 #close + Reported by: seanchann.zhou + + Change-Id: Ie3b5fb421977ccdb33e415d4ec52c3fd192601b7 + +2017-09-29 09:50 +0000 [04d3785a79] Sean Bright + + * dtls: Add support for ephemeral DTLS certificates. + + This mimics the behavior of Chrome and Firefox and creates an ephemeral + X.509 certificate for each DTLS session. + + Currently, the only supported key type is ECDSA because of its faster + generation time, but other key types can be added in the future as + necessary. + + ASTERISK-27395 + + Change-Id: I5122e5f4b83c6320cc17407a187fcf491daf30b4 + +2017-11-06 03:21 +0000 [4013bfa52b] Corey Farrell + + * configure: Add autoconf check for libopusfile. + + This check is being added to make it easier for end-users of third party + open source Opus modules. This was removed by ASTERISK-26426 but only + the module needed to be removed. + + Change-Id: I62b9cd0c4fa8a77596ab0e042948a643a1152677 + +2017-11-06 03:18 +0000 [19332e6968] Alexander Traud + + * tcptls: Print notice when TLS is enabled but not configured. + + Asterisk can be compiled without a SSL/TLS library, without the Development + Headers of OpenSSL. However, if TLS (SIP) or Secure-WebSockets (WebRTC) was + enabled in a configuration file, Asterisk did not notice the user. Asterisk + failed silently, only the corresponding TCP ports were not open. + + ASTERISK-27394 + Reported-by: mossley74 + + Change-Id: Ib8b7539a5b2af8154c22e5f7a40fc68f95d95b93 + +2017-11-04 06:05 +0000 [2ebea5aa03] Alexander Traud + + * install_prereq: Checkout of libSRTP 2.x. + + Since Asterisk 13.17, libSRTP 2.x is supported. Therefore, its latest version + is installed again via the script install_prereq. + + ASTERISK-27356 + + Change-Id: I13125839a79052356469e41edacbebff0a937d39 + +2017-11-01 17:47 +0000 [79ddcdbc70] Richard Mudgett + + * Stasis/ARI: Fix off-nominal path json memory leaks. + + Change-Id: Id569c624c426e3b22a99936473c730592d8b83fb + +2017-11-02 11:38 +0000 [229790ea3d] Richard Mudgett + + * AOC: Fix AOC-S json memory leak. + + Change-Id: I3a1d40a41a8a7d00fa4a187de6a343a79155d3ef + +2017-11-01 18:04 +0000 [de4a4796d0] Richard Mudgett + + * res_stasis_device_state.c: Optimize stasis_app_device_states_to_json() + + * Eliminate RAII_VAR() + * Replace looped alloca with a char[] since that is how it is used anyway. + + Change-Id: Ia27e64a884afa0f50b9ffdb1cf23da6bfa51ffdf + +2017-11-01 18:58 +0000 [103b05bb4b] Richard Mudgett + + * res_stasis_mailbox.c: Fix leak of mailbox container. + + Change-Id: I7d33c1635713047e7d1597c9d882f7dc006d94b4 + +2017-11-03 10:35 +0000 [290bad22c9] Corey Farrell + + * Build System: Fix build failure caused by recent CLI improvements. + + We use the editline library to help with filename completion in our CLI + interface. Some systems failed to find the header when included from + loader.c. This is fixed by setting the proper CFLAGS for the build of + loader.o. + + ASTERISK-27378 + + Change-Id: Ib7fd496f1d7ed48141a2eadd5dd61cab2f2308be + +2017-11-01 11:12 +0000 [f8e0f9be22] Ben Ford + + * res_pjsip: Add to list of valid characters for from_user. + + Fixes a regression where some characters were unable to be used in + the from_user field of an endpoint. Additionally, the backtick was + removed from the list of valid characters, since it is not valid, + and it was replaced with a single quote, which is a valid character. + + ASTERISK-27387 + + Change-Id: Id80c10a644508365c87b3182e99ea49da11b0281 + +2017-11-02 05:34 +0000 [8701479386] Joshua Colp + + * core: Don't attempt to write to a stream that does not exist. + + When a frame is provided to ast_write ensure that a multistream + capable channel has a stream for it before attempting to give it + to the channel driver. In some cases (such as a deferred SDP + negotiation) the stream may not yet exist. + + ASTERISK-27364 + + Change-Id: Icf84ca982a67cdd6e9a71851eb7eb1bd0e865276 + +2017-11-02 01:57 +0000 [606ae3484a] Corey Farrell + + * Add missing menuselect dependencies. + + This adds menuselect dependencies for modules that use symbols of other + modules. + + ASTERISK-27390 + + Change-Id: Ia2d2849f5b87a72af7324a82edc3f283eafb5385 + +2017-11-01 22:57 +0000 [b616b7e4a9] Corey Farrell + + * res/ari/resource_bridges.h: Update from 'make ari-stubs'. + + A comment was updated when I ran 'make ari-stubs'. + + Change-Id: Ib5154ae3ad72aff53374c28ead540fe349c42175 + +2017-11-01 19:46 +0000 [79f111e1f3] Corey Farrell + + * Prevent unload of modules which implement an Optional API. + + Once an Optional API module is loaded it should stay loaded. Unloading + an optional API module runs the risk of a crash if something else is + using it. This patch causes all optional API providers to tell the + module loader not to unload except at shutdown. + + ASTERISK-27389 + + Change-Id: Ia07786fe655681aec49cc8d3d96e06483b11f5e6 + +2017-10-30 17:30 +0000 [b9f457eac0] Corey Farrell + + * Modules: Additional improvements to CLI completion. + + Replace 'needsreload' argument with a 'type' argument to specify which + type of modules you want completion. This provides more accurate CLI + completion for load and unload commands. + + * 'module unload' now excludes modules that have active references or are + not running. + * 'module load' now excludes modules that are already running. + * 'core set debug [atleast] [module]' shows running modules only. + + ASTERISK-27378 + + Change-Id: Iea3e00054461484196c46f688f02635cc886bad1 + +2017-11-01 13:58 +0000 [1bfd1cf640] Sean Bright + + * pjsip_message_filter: Only do interface lookup for wildcard addresses. + + Change-Id: Ie083987e69dc43b6861671c218cacacc11b2072f + +2017-10-31 15:08 +0000 [1e70011710] Kevin Harwell + + * features: Bridge application's BRIDGERESULT not appropriately set + + The dialplan application "Bridge" was not setting the BRIDGERESULT to failure + when a failure did occur. Even worse if it did fail to join the bridge it would + still report success. + + This patch now sets the BRIDGERESULT variable to an appropriate value for a + given condition state. Also, removed the value INCOMPATIBLE as a valid result + type since it is no longer used. + + ASTERISK-27369 #close + + Change-Id: I22588e7125a765edf35cff28c98ca143e9927554 + +2017-10-31 13:18 +0000 [f2175c5a39] Corey Farrell + + * res_ari_channels: Fix reference leak in channel_state_invalid. + + channel_state_invalid leaked a reference to the channel snapshot any + time it was aquired. + + ASTERISK-27067 #close + + Change-Id: I8c653f00416b39978513c5605c4be0f03b1df29a + +2017-10-25 17:31 +0000 [4c535f5c30] Joshua Colp + + * core / pjsip: Add support for grouping streams together. + + In WebRTC streams (or media tracks in their world) can be grouped + together using the mslabel. This informs the browser that each + should be synchronized with each other. + + This change extends the stream API so this information can + be stored with streams. The PJSIP support has been extended + to use the mslabel to determine grouped streams and store + this association on the streams. Finally when creating the + SDP the group information is used to cause each media stream + to use the same mslabel. + + ASTERISK-27379 + + Change-Id: Id6299aa031efe46254edbdc7973c534d54d641ad + +2017-10-30 09:20 +0000 [022de525be] Tzafrir Cohen + + * ast_coredumper: allow setting asterisk binary explicitly + + Adds an extra option, --asterisk-bin= to ast_coredumper. If + provided, the binary given to gdb will be the parameter, rather than + asterisk from the PATH. + + ASTERISK-27380 #close + + Change-Id: I25f5b91eb75059b0fb2f142e468c26b283b0a9f3 + +2017-10-25 01:10 +0000 [3052b56423] Florian Floimair + + * alembic: Add bundle column in ps_endpoints table + + The ps_endpoints table was missing the bundle column + introduced with the bundle feature in + commit 065c3005ad92. + + ASTERISK-27374 #close + + Change-Id: Ic900f4f2c20f64b99ea898d50f5c0a7117472d46 + +2017-10-30 00:32 +0000 [e82b921c35] Corey Farrell + + * Modules: Fix issues with CLI completion. + + * Stop using ast_module_helper to check if a module is loaded, use + ast_module_check instead (app_confbridge and app_meetme). + * Stop ast_module_helper from listing reload classes when needsreload + was not requested. + + ASTERISK-27378 + + Change-Id: Iaed8c1e4fcbeb242921dbac7929a0fe75ff4b239 + +2017-10-28 19:18 +0000 [9bad4c74cc] Igor Goncharovskiy + + * app_agent_spool: Fix typo in dtmf features usage desctiption + + Fix typo, that specify usage wrong option 'dtmf-features' for CHANNEL() function + instead of correct 'dtmf_features' + + ASTERISK-27377 #close + + Change-Id: I15ecc829c1035b359584673e12cdb5c9291ac930 + +2017-10-27 13:41 +0000 [0991874430] Corey Farrell + + * res_pjsip_pubsub: Resolve potential crash in allocate_subscription. + + When allocate_subscription fails to initialize fields of the new sub it + calls destroy_subscription. + + Change-Id: I5b79c915ec216dc00c13c1e4172137864a4bec85 + +2017-10-26 12:18 +0000 [26607e4e3b] Richard Mudgett + + * app_voicemail.c: Fix compiler warning with IMAP build. + + ASTERISK-27181 + + Change-Id: Ic4468b49860bd7f67e922baf4c9e96828c184d17 + +2017-10-25 14:38 +0000 [2ca3dbb197] Richard Mudgett + + * codec.c: Defensively check the returned samples. + + Earlier versions of the codec_opus samples_count callback can return + negative error values on undecodable frames. This resulted in a divide by + zero exception. + + * Added a defensive check in ast_codec_samples_count() for a "negative" + samples count return value. Log the event and set the count to zero. + + ASTERISK-27194 + + Change-Id: Icf69350307ecbbc80a3d74de46af9bd80ea17819 + +2017-10-24 10:33 +0000 [9e1fbab382] Joshua Colp + + * res_pjsip: Add 'ip' as a valid option to 'identify_by' on endpoint. + + When the identify_by option on an endpoint is set to ip it will + only be identified using the res_pjsip_endpoint_identifier_ip module. + This ensures that it is not mistakenly matched using the username of + the From header. To ensure behavior has not changed the default has + been changed to "username,ip" for the identify_by option. + + ASTERISK-27206 + + Change-Id: I2170b86a7f7e221b4f00bf14aa1ef1ac5b050bbd + +2017-10-25 12:26 +0000 [4aec70690d] George Joseph + + * ast_coredumper: Add gzipping of binaries and display of signal info + + The --tarball-coredump option now creates a gzipped tarball of + coredumps processed, their results txt files and copies of + /etc/os-release, /usr/sbin/asterisk, /usr/lib(64)/libasterisk* and + /usr/lib(64)/asterisk as those files are needed to properly examine + the coredump. The file will be named + /tmp/asterisk..coredumps.tar.gz or + /tmp/asterisk-.coredumps.tar.gz if --tarball-uniqueid was + specified. + + Added dumps of *_siginfo to the top of the txt files so you can + tell what signal was invoked. + + Change-Id: Ib9ee6d83592d4b1bc90cb3419a05376a88d1ded9 + +2017-10-25 09:23 +0000 [3821be1c68] Ben Ford + + * http.c: Fix http header send content. + + Currently ast_http_send barricades a portion of the content that + needs to be sent in order to establish a connection for things + like the ARI client. The conditional and contents have been changed + to ensure that everything that needs to be sent, will be sent. + + ASTERISK-27372 + + Change-Id: I8816d2d8f80f4fefc6dcae4b5fdfc97f1e46496d + +2017-03-30 09:51 +0000 [5553adb8ba] Corey Farrell + + * Build System: Fix --disable-xmldoc option. + + The configure option to disable XML documentation does not currently + work. This patch makes it effective, but also causes an ABI change by + removing the ast_xmldoc_* symbols. Disabling xmldoc also prevents docs + from being automatically generated, but they can still be manually + generated with 'make doc/core-en_US.xml'. + + ASTERISK-26639 + + Change-Id: Ifac562340c09f80c83e0203de098fcac93bf8c44 + +2017-10-23 00:55 +0000 [569e9a8391] Corey Farrell + + * Single API for ast_store_lock_info and ast_remove_lock_info. + + This makes the 'bt' parameter unconditional for ast_store_lock_info and + ast_remove_lock_info. The 'bt' parameter is unused when HAVE_BKTR is + undefined. + + Change-Id: Ieced0e920928b735a39c3b5952b806c473d67453 + +2017-10-24 09:43 +0000 [6474de5f72] Corey Farrell + + * chan_sip: Fix SUBSCRIBE with missing "Expires" header. + + When chan_sip receives a SUBSCRIBE request with no "Expires" header it + processes the request as an unsubscribe. This is incorrect, per RFC3264 + when the "Expires" header is missing a default expiry should be used. + + ASTERISK-18140 + + Change-Id: Ibf6dcd4fdd07a32c2bc38be1dd557981f08188b5 + +2017-10-24 07:24 +0000 [7126520b3e] Alexander Traud + + * lpc10: Avoid compiler warning when DONT_OPTIMIZE/COMPILE_DOUBLE. + + ASTERISK-23556 + Reported by: Marcello Ceschia + + Change-Id: Ic27e88e0336a0d83877dc857938659dc5560b93c + +2017-10-07 12:14 +0000 [841ac3ded6] Corey Farrell + + * hashtab: Use ast_free. + + A few places in hashtab use free instead of ast_free, remove declaration + of ASTMM_LIBC from hashtab.c as it's no longer needed. + + Change-Id: I2ff089bad71640c03c3ce97f1b00fc962ef79427 + +2017-10-23 01:02 +0000 [fb585cf185] Corey Farrell + + * Bundled pjproject: Enable pj_assert when dev-mode is enabled. + + ASTERISK-27359 + + Change-Id: Ib01fb6c01f9bb87129374a51cb9318c474147517 + +2017-10-23 13:44 +0000 [ee21076151] Corey Farrell + + * main/Makefile: Remove rule for non-existant testexpr2. + + Change-Id: Ibb3e47f27a395d74d8c5263db015b05434f5969b + +2017-10-23 12:42 +0000 [a9e9608982] Corey Farrell + + * test_config: Fix failure and segfault when config_hook is run twice. + + On second run the config_hook test was unexpectedly failing to load + test_config.conf because it was still unmodified since the last load. + This is fixed by not passing CONFIG_FLAG_FILEUNCHANGED for the initial + loads, only using it when we are tested that a reload of unmodified + files do not initiate the hook. + + ASTERISK-25960 + + Change-Id: Ifd679509a23ed163e5cc647490bf7df4ae3cd856 + +2017-10-23 12:23 +0000 [6f0431798e] George Joseph + + * res_pjsip_sdp_rtp: Fix setting of address type for rtp_ipv6 + + create_outgoing_sdp_stream was setting "addr_type = STR_IP6" only + when an ipv6 media_address was specified on the endpoint. If + rtp_ipv6 was set and ast_sip_get_host_ip_string returned an ipv6 + address, we were leaving the addr_type set at the default of + STR_IP4. This caused the address type to be set incorrectly on the + "o" and "c" SDP attributes even though the address was set + correctly. Some clients don't like the mismatch. + + * Removed the test for endpoint/media_address and now check all + addresses for ipv6. + + ASTERISK-27198 + Reported by: Martin Cisárik + + Change-Id: I5214fc31b728117842243807e7927a319cf77592 + +2017-10-23 07:53 +0000 [488f98310f] Richard Mudgett + + * app_agent_pool.c: Fix online documentation typo. + + Change-Id: Ib0bc95fd0ec288c78c313823254d7a84ebfc4429 + +2017-10-22 17:32 +0000 [252353e0a9] Joshua Colp + + * res_xmpp: Ensure the connection filter is available. + + Users of the API that res_xmpp provides expect that a + filter be available on the client at all times. When + OAuth authentication support was added this requirement + was not maintained. + + This change merely moves the OAuth authentication to + after the filter is created, ensuring users of res_xmpp + can add things to the filter as needed. + + ASTERISK-27346 + + Change-Id: I4ac474afe220e833288ff574e32e2b9a23394886 + +2017-10-21 03:44 +0000 [840e08716b] Alexander Traud + + * chan_sip: Crypto attribute not last but first on SDP media level. + + This matches the behavior of the other SIP channel driver, chan_pjsip. + + ASTERISK-27365 + + Change-Id: I8f23a51290a58b75816da2999ed1965441dfc5d6 + +2017-10-17 10:53 +0000 [e41561fc2a] Richard Mudgett + + * res_pjproject.c: Upgrade bundled PJPROJECT to 2.7 + + Update patches included in bundled PJPROJECT for the new version. + + ASTERISK-27355 + + Change-Id: I9ac5dbbffaadca25ad24fac8b9ab615e5ace6083 + +2017-10-16 16:46 +0000 [4559cd0e28] Nir Simionovich + + * This patch adds a beanstalk CDR backend. + + Beanstalkd is a simple to use job queue. It provides a means to + create multiple job queues called "tubes". Each tube can store + multiple jobs, with varying priorities with the queue. Queue + processing is available via a simple TCP socket or via well defined + libraries, avaialble at + https://github.com/kr/beanstalkd/wiki/client-libraries + + This module is based upon the beanstalk-client library, available + for download at: https://github.com/deepfryed/beanstalk-client + + Change-Id: I5fe4089a34ab3b39230786d9bbfddafa56715f48 + +2017-10-18 13:41 +0000 [4760b2445c] Corey Farrell + + * res_pjsip_pubsub: Prevent unload except during shutdown. + + Prevent unload of the module as certain pjsip initialization functions + cannot be reversed. This required a reorder of the module_load so that + the non-reversable pjsip functions are not called until all potential + e